iOS 启动时在window上添加视图不显示问题

一般项目在启动时,都会加载一个广告页或者第一次加载时有引导页,要做这个有很多种方案,比如:

1. 自定义一个视图添加到window上.

2. 或者写个controller,启动时作为rootViewController,登录成功后再把rootViewController指向tabBarController.

3.等等.......

不同的程序员会根据自己的项目需求用不同的处理方案, 我的项目里我是采用的第一种方案,将视图添加到window上,但是添加window上的时候发现出问题了. 启动的时候,根本看不到添加的视图,启动完成后就直接显示rootViewController了.如图所示:

添加到window上的视图被覆盖了,不显示.

开始以为是自己的视图写的有问题,找了很久才发现是被覆盖的原因.

解决方案:

1. 可以自己再定义个window,添加到自己定义的window上.

UIWindow *guideWindow = [[UIWindow alloc] initWithFrame:gpView.frame];

    guideWindow.rootViewController = [UIViewController new];

    guideWindow.windowLevel = UIWindowLevelStatusBar;

    [guideWindow.rootViewController.view addSubview:gpView];

    [guideWindow makeKeyAndVisible];

    self.guideView = gpView;

    __weak typeof(self) weakSelf = self;

    gpView.experienceBlock = ^{

        guideWindow.hidden = YES;

        [weakSelf launchLogin];

    };

2.  把添加视图放在 [self.window makeKeyAndVisible]; 这句代码之后.

写在window显示之后

这样就可以了.

总结:  启动时在window上添加视图,需要在window显示并作为keyWindow之后添加.也就是要放在[self.window makeKeyAndVisible];这句代码之后.  否则,由于在添加视图的时候,window有了rootViewController,它只管理rootViewController,添加的view会被rootViewController覆盖掉.(即使添加视图是在设置rootViewController之后,也是如此.)

你可能感兴趣的:(iOS 启动时在window上添加视图不显示问题)