本文介绍: ·引起黑屏现象的原因分析:原因:iOS工程代码中缺少window​​​​​属性详细说明:Xcode11以后,Xcode默认使用Scene进行多窗口分屏管理我们可以在SceneDelegate文件看到window​​​​​属性已经被默认创建,如下图所示:当我们没有多窗口分屏的需求时,可以删除工程中Scene的相关代码(SceneDelegate文件、AppDelegate中有关Scene的方法、Info.plist文件中的Scene配置项,这里可参照下文的步骤二至四进行操作)。删除

·引起黑屏现象的原因分析  

原因:iOS工程代码中缺少window​​​​​属性

详细说明Xcode11以后,Xcode默认使用Scene进行多窗口分屏管理,我们可以在SceneDelegate文件看到window​​​​​属性已经被默认创建,如下图所示

我们没有多窗口分屏的需求时,可以删除工程中Scene的相关代码(SceneDelegate文件AppDelegate中有关Scene的方法、Info.plist文件中的Scene配置项,这里可参照下文的步骤二至四进行操作)。

删除Scene代码后,APP生命周期管理由 AppDelegate完全负责代码运行成功时,模拟器黑屏控制台打印如下错误信息:​​​​​​​

从此处可以看出,模拟黑屏是由于缺少window属性引起的。这是由于APP的所有view控件都是在window窗口属性展示的,AppDelegate文件没有默认创建window属性,所以是无法显示出任何view控件的。

·解决方案如下

步骤一:在AppDelegate文件中添加window属性

步骤二:删除SceneDelegate文件

 步骤三:删除AppDelegate中,有关Scene的两个方法如下所示

// MARK: UISceneSession Lifecycle

func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
    // Called when a new scene session is being created.
    // Use this method to select a configuration to create the new scene with.
    return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}

func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
    // Called when the user discards a scene session.
    // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
    // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}

 步骤四:删除Info文件中,Scene的配置项

·结果项目运行成功,页面展示正常

​​​​​​​

原文地址:https://blog.csdn.net/RRJia/article/details/122901992

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_15001.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注