今天我在写一个弹出框的时候遇到了一个奇怪的问题。一般情况下,我们为了保证弹出框在界面的最上面都是直接在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。
今天把这个问题记录一下,如果有遇到同样问题的可以看一下。