一般项目在启动时,都会加载一个广告页或者第一次加载时有引导页,要做这个有很多种方案,比如:
1. 自定义一个视图添加到window上.
2. 或者写个controller,启动时作为rootViewController,登录成功后再把rootViewController指向tabBarController.
3.等等.......
不同的程序员会根据自己的项目需求用不同的处理方案, 我的项目里我是采用的第一种方案,将视图添加到window上,但是添加window上的时候发现出问题了. 启动的时候,根本看不到添加的视图,启动完成后就直接显示rootViewController了.如图所示:
开始以为是自己的视图写的有问题,找了很久才发现是被覆盖的原因.
解决方案:
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显示并作为keyWindow之后添加.也就是要放在[self.window makeKeyAndVisible];这句代码之后. 否则,由于在添加视图的时候,window有了rootViewController,它只管理rootViewController,添加的view会被rootViewController覆盖掉.(即使添加视图是在设置rootViewController之后,也是如此.)