iOS使用Xcode11新建项目scenedelegate处理和Main.storyboard的处理

1.使用scenedelegate(iOS 13以下黑屏)

xcode更新到11后,新建工程里面多了好多东西,除了原有的AppDelegate外,又新加了一个SceneDelegate,是iPadOS用来做多窗口支持的,这时候如果你还像之前的一样,在APPdelegate里写self.window的方法的话,运行程序,直接崩溃了,因为新版本的xcode的APPdelegate.h里面已经没有了window这个属性,如下图所示:

iOS13之前,Appdelegate会处理App生命周期和UI生命周期,但iOS 13之后,Appdelegate不在处理UI生命周期了,只负责处理 App 生命周期和新的 Scene Session 生命周期。而UI的生命周期就由Scene Delegate处理了。所以我们写self.window时就要放到scenedelegate里。如下:

代码如下:

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions  API_AVAILABLE(ios(13.0)){

    UIWindowScene *windowScene = (UIWindowScene *)scene;

    self.window = [[UIWindow alloc] initWithWindowScene:windowScene];

    self.window.frame = windowScene.coordinateSpace.bounds;

    ViewController *control = [[ViewController alloc]init];

    self.window.rootViewController = control;

[self.window makeKeyAndVisible];

}

这样就可以使用scenedelegate了。但使用了scenedelegate后,在iOS 13以下的手机运行会黑屏。如果你的程序只在iOS 13手机上运行,不适配iOS 13以下的设备,那么就到这里结束了。

2.如果要适配iOS 13以下的设备,需要把相关的scenedelegate都删掉才行。操作步骤如下:

1.删除info文件里关于scenedelegate里的配置信息:删除Application Scene Manifest,图中红色部分。

2.在APPdelegate.h文件增加window属性,

然后在APPdelegate.m里删除新加的scene方法。

添加之前的APPdelegate生命周期的方法,如进入前台后台等等,这些方法在xcode11以下的版本里有,你可以从以前的项目复制过来。

3.最后删除scenedelegate的2个文件

至此,运行的项目就可以在iOS 13以下的设备运行了。同样iOS 13的设备也可以用。

3.关于main.storyboard

 使用xcode新建新建项目时,都会带一个main.storyboard的主界面。如果你不进行代码控制,默认APP启动会加载main.storyboard这个界面。怎么使用这个界面来加载这里就不在介绍了,这里只说用代码加载主页,不使用main.storyboard时,怎么处理这个界面。首先和这个界面有关的主要有以下3个:第一个就是main.storeboaard这个文件,如下图所示:

第二个就是:General下main interface 这个选项,如下图所示:

第三个就是在info表中的"Main storyboard file base name”,这个对应的vaule值是main,

所以要不用main.storyboard,需要修改这三处:1.删除main.storyboard这个文件,2.将Main Interface改为空, 

3.删掉info表中的"Main storyboard file base name”。

这一步在新版xcode中已经不需要了。当第二步置为空的时候,info里面已经没有Main storyboard file base name了,但是在xcode11中info文件,多了个SceneDelegate 的配置信息,如下图所示:这就需要把图中红色的部分也删掉。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值