在applicationWillEnterForeground之前更改视图

Mit*_*hen 5 uinavigationcontroller uiapplicationdelegate ios

我希望在一段时间处于后台后将用户锁定在我的应用之外.我在AppDelegate中捕获了这个applicationWillEnterForeground(并与存储的时间进行比较applicationWillResignActive).如果小于超时时间,则不执行任何操作.如果超过我打电话的超时时间:

[_navigationController popToRootViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)

这会将用户带回根视图.

一次视觉中断,它完美无缺.在弹出到root之前,先前的视图(用户在应用程序处于非活动状态时正在查看的视图)显示非常短暂.在测试中,似乎视图在applicationWillEnterForeground被调用之前重新出现.

我唯一想到的就是在变为非活动状态之前隐藏所有内容,例如用填充的矩形遮挡视图.这对我来说就像是一个肮脏的黑客,所以我觉得有更好的办法.

我也愿意以不同的方式达到相同的最终结果.谢谢!

Mit*_*hen 0

我通过使视图不可见解决了这个问题。在 applicationWillResignActive 我有 _navigationController.view.alpha=0;,并且我放置了 _navigationController.view.alpha=100; 在(如有必要)弹出到登录视图之后的 applicationWillEnterForeground 中。比弹出和恢复视图更容易(在这种情况下相当重)。

@TheBlack 指出了隐藏属性,这在设备上可能稍微容易一些。我保留 alpha 是因为 A) 使用 50% alpha 视图进行调试很有趣,B) 我只是喜欢 alpha。但除非你像我一样是阿尔法粉丝,否则隐藏可能会更好一些。