转自: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窗口管理我们可以不需要直接删掉就好了。
- 删除掉info.plist中Application Scene Manifest选项,同时,文件SceneDelegate可删除可不删
- 相关代码注释掉
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) } func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) { } //注释掉这两个方法。
3. Appdelegate新增windows属性
var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { //如果是用默认的storyboard,下面的代码可以不写 // window = UIWindow.init() // window?.frame = UIScreen.main.bounds // window?.makeKeyAndVisible() // window?.rootViewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateInitialViewController() return true } ///做完这些就跟以前一样啦。
适配方案二
即要用iOS 13中新的SceneDelegate,又可以在iOS 13一下的设备中完美运行。那就添加版本判断,利用@available
SceneDelegate中添加@available(iOS 13, *)
import UIKit @available(iOS 13.0, *) class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? ......
AppDelegate中同样声明window属性,并把AppDelegate中两个关于Scene的类也添加版本控制,Swift中可以用扩展单独拎出来
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? ///didFinishLaunchingWithOptions中添加版本判断 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { if #available(iOS 13, *) { }else { window = UIWindow.init() window?.frame = UIScreen.main.bounds window?.makeKeyAndVisible() window?.rootViewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateInitialViewController() } return true } } @available(iOS 13.0, *) extension AppDelegate { // MARK: UISceneSession Lifecycle func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) } func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) { } }
相关推荐
全新版本全新工具-进击Apple IOS 13的SwiftUI开发实战,使用最新的Mac OS X集成开发工具Xcode11进行SwiftUI构建用户界面,让同学们最近的距离接触IOS与用户界面开发。课程分为了SwiftUI开发的基础部分与进阶部分,...
iOS 11 Programming Fundamentals with Swift Swift, Xcode, and Cocoa Basics 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
最新iOS11开发教程swift4+xcode9,iOS 11开发概述 iOS 11新特性 编写第一个iOS 11应用 4 创建iOS11项目 4 运行iOS11程序 7 iOS11模拟器介绍 iOS11Main.storyboard文件编辑界面 编写第一个iOS11代码Hello,World 15 ...
想学习ios11 xcode9 swift4 的小伙伴们可以下载看看,很棒的资料,记得给好评,谢谢!
xcode8调试IOS11 Shift+Command+G进入 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport 把解压后的文件复制进去。
IOS 11 Programming Fundamentals with Swift 4 amazon.com 上有售,值得分享!!
英语原文pdf版本 RxSwift-Xcode8 & swift3.2,学习RxSwift必备
通过阅读本书,你将学习 Swift 面向对象的概念、理解如何使用 Apple 的开发工具,以及探索 Cocoa 是如何提供 iOS 应用所需的底层功能的。
[MG] iOS Apprentice V8.0 内容详实适合初学者, 更新支持 Xcode 11, Swift 5.1, iOS 13, SwiftUI. 账号限制, 分卷分享, 单独下载无法解压, 此为分卷2. 资源来自互联网, 仅供学习, 请勿用作商业用途, 侵删.
[MG] iOS Apprentice V8.0 内容详实适合初学者, 更新支持 Xcode 11, Swift 5.1, iOS 13, SwiftUI. 账号限制, 分卷分享, 单独下载无法解压, 此为分卷3. 资源来自互联网, 仅供学习, 请勿用作商业用途, 侵删.
[MG] iOS Apprentice V8.0 内容详实适合初学者, 更新支持 Xcode 11, Swift 5.1, iOS 13, SwiftUI. 账号限制, 分卷分享, 单独下载无法解压, 此为分卷1. 资源来自互联网, 仅供学习, 请勿用作商业用途, 侵删.
iOS 10 in Swift 3 非常好的ios书! 非常好的ios书! 非常好的ios书! 非常好的ios书! 非常好的ios书! 非常好的ios书!
iOS编程基础:Swift、Xcode和Cocoa入门指南.pdf
xcode8 and ios10 1. Preface 2. GettingStartedwithXcode8Development 3. SwiftPlaygrounds 4. BuildYourFirstApp 5. HelloWorldAppExplained 6. IntroductiontoAutoLayout 7. DesigningUIUsingStackViews 8. ...
资源名称:最新iOS11开发教程swift4 xcode9资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
iOS 11 App Development Essentials Learn to Develop iOS 11 Apps with Xcode 9 and Swift 4
iOS 13.6 xcode 真机包iOS 13.6 xcode 真机包
最新swift4+xcode9+ios11开发书籍pdf英文版,排版良好,目录清晰
iOS Apprentice v7 raywenderlich 出品 目前(2019-07)最新版本 iOS 12 + Xcode 10 + Swift 4.2 官链 https://store.raywenderlich.com/products/ios-apprentice 自己添加了书签并且人工校对过.
iOS Apprentice 第六版(Swift4 和 Xcode9)。内含 pdf 及所有章节的代码。