(转)[IOS]xcode11建立swift项目会黑屏

在Xcode 11上构建的iOS应用,当运行在iOS 13.0以下设备时可能出现黑屏问题。原因在于Xcode 11引入了UIScene和SceneDelegate来支持iPadOS的多窗口功能。解决方法包括删除不需要的SceneDelegate配置或使用@available进行版本判断。适配方案一是删除info.plist中的Application Scene Manifest和SceneDelegate文件,适配方案二是通过@available注解在AppDelegate中处理不同iOS版本的兼容性。

转自:https://www.jianshu.com/p/8659851b5e94

 

在Xcode 11 创建的工程,运行设备选择 iOS 13.0 以下的设备,运行应用时会出现黑屏现象。

原因:

  • Xcode 11 默认是会创建通过 UIScene 管理多个 UIWindow 的应用,工程中除了 AppDelegate 外会多一个 SceneDelegate
  • AppDelegate和SceneDelegate这是iPadOS带来的新的多窗口支持的结果,并且有效地将应用程序委托的工作分成两部分。

也就是说在我们用多窗口开发iPadOS中,从iOS 13开始,您的应用代表应该:

  • 设置应用程序期间所需的任何数据。
  • 响应任何专注于应用的事件,例如与您共享的文件。
  • 注册外部服务,例如推送通知。
  • 配置您的初始场景。

相比之下,在iOS 13中的新顶级对象是一个UIWindowScene,场景代表可以处理应用程序用户界面的一个实例。因此,如果用户创建了两个显示您的应用程序的窗口,则您有两个场景,均由同一个应用程序委托支持。
这些场景旨在彼此独立工作。因此,您的应用程序不再移动到后台,而是单个场景执行 - 用户可以将一个移动到后台,同时保持另一个打开。

适配方案一

如果我们不开发iPadOS多窗口APP,SceneDelegate窗口管理我们可以不需要直接删掉就好了。

 

  1. 删除掉info.plist中Application Scene Manifest选项,同时,文件SceneDelegate可删除可不删
  2. 相关代码注释掉

 

func application(_ applicat
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值