美文网首页
iOS 启动时在window上添加视图不显示问题

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

作者: 柚子皮肤 | 来源:发表于2018-06-07 12:21 被阅读0次

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

    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上添加视图不显示问题

          本文链接:https://www.haomeiwen.com/subject/wfxgsftx.html