在Xcode 11 新创建的工程,运行设备选择iOS 13.0 以下的设备,运行启动应用时会出现黑屏现象
Xcode 11 默认是会创建通过UIScene 管理多个UIWindow 的应用,工程中除了AppDelegate 外会多一个SceneDelegate类。
SceneDelegate这是iPadOS带来的新的多窗口支持的结果,并且有效地将应用程序委托的工作分成两部分。
解决:
如果我们不开发iPadOS多窗口APP,SceneDelegate窗口管理我们可以不需要,直接删掉就好了,还是保持和以前一样单窗口。
a) 删除掉info.plist中Application Scene Manifest选项;
b) 删除SceneDelegate.h、SceneDelegate.m文件,(也可不删,不调用就没啥影响)。
c) 全局搜索Scene相关代码注释掉。
d) Appdelegate.h 新增windows属性。
@property (strong, nonatomic) UIWindow *window;
e) AppDelegate.m 一定要注释掉下面这两个方法,否则运行App还是黑屏。
#pragma mark - UISceneSession lifecycle
/*
- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
}
-(void)application:(UIApplication*)application didDiscardSceneSessions:(NSSet *)sceneSessions {
}
*/