申请前更改视图WillEnterForeground

| 在后台运行一段时间后,我想将用户锁定在我的应用程序之外。我正在AppDelegate的
applicationWillEnterForeground
(与存储在
applicationWillResignActive
中的时间进行比较)中发现了这一点。如果少于超时时间,则不执行任何操作。如果超过超时时间,我会致电:
[_navigationController popToRootViewControllerAnimated:NO];
从而使用户返回到根视图。 一目了然,效果完美。在弹出到根目录之前,以前的视图(应用程序处于非活动状态时用户正在查看的视图)非常短暂地出现。在测试中,该视图似乎在调用“ 0”之前重新出现。 我唯一的想法是在不活动之前隐藏所有内容,例如通过用填充的矩形遮盖视图。对我来说,这闻起来像是肮脏的骇客,所以我在想有一种更好的方法。 我也愿意以不同的方式达到相同的最终结果。谢谢!     
已邀请:
我已经通过使视图不可见解决了这一问题。在applicationWillResignActive中,我有_navigationController.view.alpha = 0 ;,并且我已放置_navigationController.view.alpha = 100;在(如有必要)弹出登录视图后,在applicationWillEnterForeground中。比弹出和还原视图更容易(在这种情况下,视图非常繁琐)。 @TheBlack指出了hidden属性,这在设备上可能稍微容易一些。我要留下Alpha,因为A)使用50%Alpha视图进行调试很有趣,B)我就像Alpha一样。但是除非您像我这样的alpha粉丝,否则隐藏起来可能会更好一些。     
来自文档:处理应用程序状态转换的策略   准备应用程序快照      在应用程序委托的applicationDidEnterBackground:方法返回后不久,系统会为应用程序的窗口拍摄快照。同样,在唤醒应用程序以执行后台任务时,系统可能会拍摄新快照以反映任何相关更改。例如,当唤醒应用程序以处理下载的项目时,系统会拍摄新的快照,以便可以反映由于合并项目而引起的任何更改。系统在多任务UI中使用这些快照图像来显示应用程序的状态。      如果在进入背景时对视图进行了更改,则可以调用主视图的snapshotViewAfterScreenUpdates:方法来强制呈现这些更改。在视图上调用setNeedsDisplay方法对快照无效,因为快照是在下一个绘制周期之前拍摄的,因此可以防止呈现任何更改。调用值为YES的snapshotViewAfterScreenUpdates:方法会强制立即更新快照机制使用的基础缓冲区。     

要回复问题请先登录注册