在我的应用程序中,我在启动时以及从后台恢复以呈现加载/摘要屏幕时在根视图控制器顶部呈现模式视图控制器。这在几秒钟后被解除以显示根视图控制器。模态是通过applicationWillEnterForeground
应用程序委托上的方法呈现的。
一切正常,但是当从后台恢复时,在再次呈现加载模式之前看到下部根视图控制器的闪烁是很常见的。
我正在努力寻找一种明显的方法来进行此演示,以确保它安全地显示而无需先看到下面的视图。我错过了一些非常明显的东西吗?
在我的应用程序中,我在启动时以及从后台恢复以呈现加载/摘要屏幕时在根视图控制器顶部呈现模式视图控制器。这在几秒钟后被解除以显示根视图控制器。模态是通过applicationWillEnterForeground
应用程序委托上的方法呈现的。
一切正常,但是当从后台恢复时,在再次呈现加载模式之前看到下部根视图控制器的闪烁是很常见的。
我正在努力寻找一种明显的方法来进行此演示,以确保它安全地显示而无需先看到下面的视图。我错过了一些非常明显的东西吗?
该文档说明了以下内容:
准备为他们拍照。当 applicationDidEnterBackground: 方法返回时,系统会为您的应用程序的用户界面拍照,并将生成的图像用于过渡动画。如果您的界面中的任何视图包含敏感信息,您应该在 applicationDidEnterBackground: 方法返回之前隐藏或修改这些视图。
这意味着您应该修改视图,applicationDidEnterBackground:
使其以您希望它出现在图片中的方式出现,当应用程序进入后台状态时,iOS 将自动拍摄。
还要记住以下几点:
您的应用委托的 applicationDidEnterBackground: 方法大约有 5 秒的时间来完成所有任务并返回。在实践中,此方法应尽快返回。如果该方法在时间用完之前没有返回,您的应用程序将被终止并从内存中清除。如果您仍然需要更多时间来执行任务,请调用 beginBackgroundTaskWithExpirationHandler: 方法来请求后台执行时间,然后在辅助线程中启动任何长时间运行的任务。无论您是否启动任何后台任务,applicationDidEnterBackground: 方法仍必须在 5 秒内退出。
我记得,当应用程序作为背景时,Apple 代码会截取屏幕截图并将其存储起来。当您的应用程序重新启动时,它会显示屏幕截图,直到您的应用程序完成并接管。
简短的回答,我认为不可能避免内容的闪现。
你真的有 2 个选择,我只是建议制作一个简短的“出现”动画以进行平滑过渡。如果您尝试通过重新登录提示或其他方式保护敏感材料,那将不起作用。如果你正在处理这样的情况,你需要在进入后台状态时处理事情,而不是在你从它回来时处理事情。