iOS13后添加SceneDelegate初始化window方式的改变

生命周期的变化

iOS13之前

Appdelegate的职责全权处理App生命周期和UI生命周期;

iOS13之后:

Appdelegate的职责是:
1、处理 App 生命周期
2、新的 Scene Session 生命周期

iOS13之后UI生命周期由新的 Scene Session负责

初始化window的变化

新的xcode默认是storyboard加载,如果要改为代码加载需要在Scene Session中添加

- (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];
}

但目前Scene Session只支持iOS13,兼容以前的版本,做版本判断,或者直接删掉Scene Session,回到熟悉的iOS13之前,需要如下步骤:

1.删除info.plist中的Application Scene Manifest,删除MainInterface
image.png
2.删除Appdelegate中UISceneSession的相关代码,并添加如下代码

@property (strong, nonatomic) UIWindow *window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = UIColor.whiteColor;
    self.window.rootViewController = BaseTabBarController.new;
    [self.window makeKeyAndVisible];
    
    return YES;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容