zoukankan      html  css  js  c++  java
  • 关于keywindow的一个小问题

     转载请注明出处!!!

      今天我在写一个弹出框的时候遇到了一个奇怪的问题。一般情况下,我们为了保证弹出框在界面的最上面都是直接在keywindow上直接加一个蒙版。但是今天写的小demo中蒙版不出现。蒙版上添加的弹出提示也就不显示了。这是为什么?

         获取keyWindow的方法,我们一般如下所写:

    UIView *darkView = [[UIView alloc] init];
    darkView.frame = (CGRect){0, 0,[UIScreen mainScreen].bounds.size};
    darkView.backgroundColor = [UIColor colorWithRed:46 /255.0 green: 49 /255.0 blue:50 /255.0 alpha:1.0];
    darkView.alpha = 0.5;
        
    UIWindow *appWindow = [[UIApplication sharedApplication] keyWindow];
    [appWindow addSubview:darkView];
    

       就这样我就在viewDidLoad中创建个蒙版。结果不出现任何东西。这是为什么?

         后来我发现keywindow为nil。

         然后我开始打印keywindow,发现在viewDidLoad中获取的keywindow为nil,在viewWillAppear中获取的才不为nil。这就有些奇怪了。为什么之前在工程中在viewDidLoad中获取的keywindow不为nil?

         原来在新建的工程中,没有导航栏。viewDidLoad中获取的keywindow为nil,在viewWillAppear中获取的才不为nil。如果是有导航栏的工程中viewDidLoad中获取的keywindow不为nil。

         今天把这个问题记录一下,如果有遇到同样问题的可以看一下。

  • 相关阅读:
    AOP从静态代理到动态代理 Emit实现
    云计算仿真工具CloudSim介绍和使用
    SSH框架中配置log4j的方法
    SSH常见面试题
    第一章
    shell 生成目录的树状视图、生成文件及子目录的汇总信息
    shell拼写检查,利用Linux字典
    SHELL:多文件的重命名和移动
    sort
    tr1
  • 原文地址:https://www.cnblogs.com/weicyNo-1/p/9133403.html
Copyright © 2011-2022 走看看