在应用程序启动时将View Controller显示在其他应用程序之上在ios 8中不起作用

时间:2014-09-25 07:52:22

标签: ios objective-c uiviewcontroller ios8

我使用以下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    ...
    window.rootViewController = self.viewController;
    [window makeKeyAndVisible];

    if (self.requireLogin){
        [self.viewController presentViewController:self.loginViewController animated:NO completion:nil];
    }
}

所以我在viewController的顶部推送loginViewController。这在8之前的iOS上运行正常,但在iOS 8上你可以看到viewController的少量时间。

是否有简单的方法在iOS 8上呈现视图控制器而不显示其背后的内容?

编辑: 在日志中注意到它还有"不平衡调用开始/结束外观转换"所以想想ios 8在self.viewController上运行一些动画。有没有办法阻止它动画?

1 个答案:

答案 0 :(得分:1)

尝试隐藏最初,然后取消隐藏。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    window.rootViewController = self.viewController;

    // Hide initially
    window.rootViewController.view.hidden = YES;

    [window makeKeyAndVisible];

    if (self.requireLogin){
        [self.viewController presentViewController:yourloginViewController animated:NO completion:^{

            // Unhide now
            window.rootViewController.view.hidden = NO;

        }];
    }
}

根据回复,似乎没有显示启动画面,所以我更好的建议是

  1. 如果您知道显示登录视图的YES / No(基于self.requireLogin),则将登录视图控制器设置为窗口的rootviewcontroller。

    if (self.requireLogin){
    
        window.rootViewController = yourLoginViewController;
    
    }
    else{
    
        window.rootViewController = normalViewController;
    
    }
    
  2. 您仍然需要使用与您相同的策略,然后在普通的View Controller上添加一个UIImageView,然后显示登录视图控制器。

  3. 选项是你的:)