美文网首页iOS
IOS13 SceneDelegate详解

IOS13 SceneDelegate详解

作者: Mr_Lxh | 来源:发表于2020-05-14 14:44 被阅读0次

    Xcode更新到11以后,新建项目,系统新增了一个SceneDelegate文件。

    在ios13之前,APP的生命周期和UI生命周期是由Appdelegate全权负责的。


    ios13之前

    在ios13之后,这种状况发生了改变。
    Appdelegate的职责是:
    1、处理App生命周期
    2、新的Scene Session生命周期

    SceneDelegate的职责是:
    1、处理UI生命周期

    ios13之后

    对于使用Xcode11创建新项目的开发者。初始化window方法需要作出改变。
    不在Appdelegate的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions进行初始化,而转交给SceneDelegate的willConnectToSession:方法进行根控制器设置:

    - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
        UIWindowScene *windowScene = (UIWindowScene *)scene;
        self.window = [[UIWindow alloc] initWithWindowScene:windowScene];
        self.window.frame = windowScene.coordinateSpace.bounds;
        self.window.rootViewController = [UITabBarController new];
        [self.window makeKeyAndVisible];
    }
    

    而对于需要适配ios13以下的设备,可以把相关的scenedelegate删掉。

    1、删除 SceneDelegate 类文件 图1

    2、删除info.plist中相关键值


    图2

    3、还原appdelegte中的window属性

    图3

    4、删除appdelegate 中 scene 相关方法

    图4

    综上,可以继续用原来的方式创建UI执行代码了。

    相关文章

      网友评论

        本文标题:IOS13 SceneDelegate详解

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