2016-03-08 36 views
0

当用户真正转到后台时,需要显示黑屏。 (不是applicationWillResignActive)。当应用程序转到后台时更改rootview控制器(applicationDidEnterBackground)

因此,我在applicationDidEnterBackground中更改了我的根视图控制器。

//Before this, there will be Sync web-service call...normally, it is fast..time out is 2 second 
dispatch_async(dispatch_get_main_queue(), ^{ 
    UIViewController *vc = [[UIViewController alloc] init]; 
    [vc.view setBackgroundColor:[UIColor blackColor]]; 
    [AppDelegate instance].window.rootViewController = vc; 
}); 

问题是它不起作用。我认为这是因为没有足够的时间。所以我研究了延长背景时间,但仍然不行。我应该怎么做才能在用户完全进入背景时显示黑屏(当用户切换应用程序时,他们会将我的应用程序视为黑屏)?

objective c - Proper use of beginBackgroundTaskWithExpirationHandler

+0

您是否正在为用户添加隐私级别?当用户返回到应用程序时,您是否要更改回原始视图控制器? – DookieMan

+0

是的。我会改回原来的VC。 –

+0

该应用程序委托中的applicationDidEnterBackground回调代码段中的代码片段?不要将其包装在'dispatch_async'中。在该方法返回后获取快照,以便通过这样做导致发生快照后发生vc更改。 – dan

回答

0

尝试增加新的视图到你的窗口,而不是改变窗口的根视图控制器,当应用程序进入后台和删除/隐藏按您的要求。将视图的背景颜色设置为黑色。祝你好运。

相关问题