基于 Xcode 11 和 iOS 13 新建project

Xcode11 新建project  新变化:SceneDelegate

本篇文章基于 Xcode 11 和 iOS 13.

这个版本开始新建的工程初始状况发生了一些改变, 新加了SceneDelegate.h /.m 文件,对应info.plist中加了 Application Scene Manifest 对应配置。即加了 SceneDelegate 场景的概念, 那么先简单了解一下这个新东西。

iOS13中 Appdelegate的职责发现了改变:

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

iOS13之后,Appdelegate的职责是:

1、处理 App 生命周期

2、新的 Scene Session 生命周期

那UI的生命周期呢?交给新增的Scene Delegate处理.

iOS13之后,Appdelegate不再负责UI生命周期,所有UI生命周期交给SceneDelegate处理.

因此初始化window方法需要改变:

如果暂时不接触SceneDelegate。

直接删除 SceneDelegate.h /.m 文件,以及对应info.plist中的 Application Scene Manifest 配置。

在AppDelegate.h 中加上 @property (strong, nonatomic) UIWindow * window; 属性。就可以保持和之前版本一样的初始化方法。

- (BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

    [self.window setBackgroundColor:[UIColor whiteColor]];

    UIViewController * vc = [[UIViewController alloc]init];

    UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:vc];

    [self.window setRootViewController:nav];

    [self.window makeKeyAndVisible];

    return YES;

}

如果顺应SceneDelegate新概念而开发。

那么不再在Appdelegate的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions进行初始化,转交给SceneDelegate的willConnectToSession:方法进行根控制器设置.

- (void)scene:(UIScene*)scenewillConnectToSession:(UISceneSession*)sessionoptions:(UISceneConnectionOptions*)connectionOptions {

    UIWindowScene*windowScene = (UIWindowScene*)scene;

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    [self.windowsetWindowScene:windowScene];

    [self.window setBackgroundColor:[UIColor whiteColor]];

    UIViewController *con = [[UIViewController alloc] init];

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:con];

    [self.window setRootViewController:nav];

    [self.window makeKeyAndVisible];

}


之后我的常规操作是

1.删除我不用的 Main.storyboard —- delete —— Move to Trash。

2.点击工程名,就是最顶级目录

右侧出现general选项卡

将Deployment info组内的Main Interface设为空

3.打开info.plist,删除 Main storyboard file base name选项。

你可能感兴趣的:(基于 Xcode 11 和 iOS 13 新建project)