viewWillTransitionToSize:withTransitionCoordinator:当app进入后台或处于非活动状态时调用

Srđ*_*đan 10 cocoa-touch uikit ios ios9

viewWillTransitionToSize:withTransitionCoordinator:当应用程序进入后台或从iOS 9开始处于非活动状态时,该方法似乎被多次调用.

例如,如果应用程序位于iPad上的纵向,则按主页按钮将使应用程序首先接收方法调用,大小为1024x768(横向),然后是768x1024(返回纵向).这让我得出结论,iOS这样做是为了获取应用切换器的屏幕截图.

我们的应用程序逻辑取决于屏幕大小和屏幕大小的更改触发任务,这些任务会根据新大小更新我们的模型.我们需要在用户旋转设备或进入多任务模式(拆分视图)时执行此操作,但是当用户进入后台时我们不能这样做.

一个想法是使用UIApplicationWillResignActiveNotification通知,但事实证明这是不可能完成的任务,因为有时viewWillTransitionToSize:withTransitionCoordinator:在发送通知之前调用它,而在发送通知之后它会被调用:

有任何想法吗?

小智 1

我目前也有同样的问题。当尺寸发生变化时,我做了很多工作,但在进入后台时却无法发生这种情况。“大多数”时间对我有用的一件事是使用 [uiapplication sharedApplication] applicationState] 检查应用程序是否在后台。在对 viewWillTransitionToSize 进行 2 次额外调用之前,应用程序状态设置为 UIApplicationStateBackground。这似乎是一致的。当使用多任务处理滑动应用程序,然后进入后台,然后再次以全尺寸进入前台时,我遇到了一些问题。在这种情况下,调用的顺序似乎并不一致,以确定应使用哪些大小更改。