我在想,如果viewWillDisappear:
和viewDidDisappear:
当开关的iOS应用程序(例如,Home键被用户按下)被调用.这会导致视图从屏幕上消失,但是为此调用回调吗?
Tre*_*kow 23
您可以.
我以前用过的解决方案是在你的app委托中使用applicationDidEnterBackground:
和applicationWillEnterForeground:
.
在您的app委托中执行此操作.
- (void)applicationDidEnterBackground:(UIApplication *)application {
[self.window.rootViewController beginAppearanceTransition:NO animated:NO];
[self.window.rootViewController endAppearanceTransition];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[self.window.rootViewController beginAppearanceTransition:YES animated:NO];
[self.window.rootViewController endAppearanceTransition];
}
Run Code Online (Sandbox Code Playgroud)
现在viewWillDisappear:
,当应用程序转到后台并返回前台时,将调用视图控制器层次结构的您的viewDidDisappear:
,viewWillAppear:
和viewDidAppear:
方法.
希望这有效吗?
编辑24/11/16(Swift 3版)
func applicationDidEnterBackground(_ application: UIApplication) {
window?.rootViewController?.beginAppearanceTransition(false, animated: false)
window?.rootViewController?.endAppearanceTransition()
}
func applicationWillEnterForeground(_ application: UIApplication) {
window?.rootViewController?.beginAppearanceTransition(true, animated: false)
window?.rootViewController?.endAppearanceTransition()
}
Run Code Online (Sandbox Code Playgroud)
编辑2/1/2017(所有窗口)
func applicationDidEnterBackground(_ application: UIApplication) {
for window in application.windows {
window.rootViewController?.beginAppearanceTransition(false, animated: false)
window.rootViewController?.endAppearanceTransition()
}
}
func applicationWillEnterForeground(_ application: UIApplication) {
for window in application.windows {
window.rootViewController?.beginAppearanceTransition(true, animated: false)
window.rootViewController?.endAppearanceTransition()
}
}
Run Code Online (Sandbox Code Playgroud)
kgr*_*nek 19
不,在那种情况下不会调用那些方法.
要在应用程序进入后台时收到通知,您可以注册UIApplicationWillResignActiveNotification通知.
顺便说一句,最简单的方法就是快速构建一个超级简单的app并设置断点.
归档时间: |
|
查看次数: |
10018 次 |
最近记录: |