iOS13 SceneDelegate自定义Window显示

先看结论:
(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;
                }
            }
        }
    }
}
知识

iOS 编绎生成 clang 编绎器 + clang 插件开发

2024-12-11 13:27:29

知识

用shell脚本遍历Mac某个目录下的所有文件

2024-12-11 13:27:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
搜索