美文网首页
iOS13 SceneDelegate自定义Window显示

iOS13 SceneDelegate自定义Window显示

作者: 笔头还没烂 | 来源:发表于2022-03-16 09:35 被阅读0次

    先看结论:
    (1)iOS 13以上 window不再由AppDelegate来管理,所以通过AppDelegate来设置keyWindowAndVisable不会显示我们的自定义Window;需通过connectedScenes来获取处于活跃状态的Scene,并将window的windowScene设置为活跃状态的Scene,完成windowScene的注册。此时该window则由该Scene来管理,才能显示。
    (2)iOS13以下 window 的 windowScene 属性有值;iOS13以上 window 的 windowScene 属性无值,需要手动赋值;

    代码如下:
    调用该方法,传入需要显示的自定义window即可。

    
    + (void)iOS13ShowCustomWindowWithWindow:(UIWindow *)window {
        if (@available(iOS 13.0, *)) {
            NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects];
            //iOS 13以上 window不再由AppDelegate来管理,所以通过AppDelegate来设置keyWindowAndVisable无效;需通过connectedScenes来获取处于活跃状态的Scene,并将window的windowScene设置为活跃状态的Scene,完成windowScene的注册。此时该window则由该Scene来管理,才能显示
            //iOS13以下 window 的 windowScene 属性有值;iOS13以上 window 的 windowScene 属性无值,需要手动赋值
            if (!window.windowScene) {
                for (UIWindowScene *windowScene in array) {
                    if (windowScene.activationState == UISceneActivationStateForegroundActive) {
                        window.windowScene = windowScene;
                        return;
                    }
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:iOS13 SceneDelegate自定义Window显示

          本文链接:https://www.haomeiwen.com/subject/iqjpdrtx.html