关于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。

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

猜你喜欢

转载自www.cnblogs.com/weicyNo-1/p/9133403.html