iOS13之后适配自己创建的window
2020-09-24 本文已影响0人
梁森的简书
UIWindow *window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 200)];
// window.windowLevel = UIWindowLevelStatusBar + 1;
window.hidden = NO;
window.alpha = 1;
window.backgroundColor = [UIColor redColor];
在iOS13之前创建上面的代码能让我们创建的window直接显示出来,可iOS13有了SceneDelegate之后上面的代码无法让我们创建的window直接显示出来,我们需要进行适配。
适配window
if (@available(iOS 13.0, *)) {
[[NSNotificationCenter defaultCenter] addObserverForName:UISceneWillConnectNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
window.windowScene = note.object;
}];
if ([UIApplication sharedApplication].windows.count > 0) {
for (UIWindow * defaultWindow in [UIApplication sharedApplication].windows) {
if (defaultWindow.windowLevel == UIWindowLevelNormal) {
window.windowScene = defaultWindow.windowScene;
}
}
}
}
再添加上上面的代码便能完美解决问题了。
销毁window的正确方式
window.hidden = YES;
window = nil;