UI

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;

上一篇下一篇

猜你喜欢

热点阅读