添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

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

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

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

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

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

·解决方案如下:

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

步骤二: 删除 SceneDelegate文件

步骤三: 删除App Delegate中,有关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的配置项

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

​​​​​​​

CMD + . 也不能stop,无奈只能CMD + OPT + ESC强制退出,网上搜了下资料,有以下两种解决方法: 方法一(常见的): 修改了hosts.txt文件,需要把文件的localhost修改回来,前往文件,打开文件: 将8.0恢复为9.0,再做一次测试,执行pod install命令后修改手动某个库的部署目标为8.0,重新运行项目,不出意外还是报错,而且就剩刚才改过部署目标的库在报错。如果应用最低部署目标版本本身不低于iOS 11,解决这个问题很简单,只需要将第三方库部署目标的iOS版本设置成和应用最低部署目标的iOS版本一致。11.0版本不是固定的,首先肯定要大于9.0版本,其次也不能高于应用最低部署目标版本,然后太低也可能会低于一些第三方库的部署目标版本,所以尽可能和应用最低部署目标版本保持一致即可。 1单独启动模拟器一下,在Xcode/Developer Tools/iOS Simulator里面,第一次启动出现画面会有些慢。如果还是没有出现,重置一下设置,在菜单里找到“Reset content and setting...”,再重启simulator。 然后在控制台输入pod install命令 如有疑问请留言或者到本站社区交流讨论,本站关于IOS 开发的文章还有很多,还请大家多多搜索查阅,希望通过本文能帮助到大家,谢谢大家对本站的支持! 您可能感兴趣的文章:IOS 开发之对象为空的判断(nil、null)详解iOS创建对象的不同姿势详解i 原因和使用了高版本的iOS(版本号大于等于15)有关。(开发机太旧,不支持过新的iOS,开发机通过OpenCore-Patcher升级至高版本macOS)实测使用iOS 14.0.1 Simulator可行。“成功避免了花1万块再买一个新的RMBP/MBA/MBP” iOS10 适配-Xcode8 问题解决: IOS开发者,系统版本的更新,必定要跟着更新,不然有些功能不知道,开发的时候对可以体验,大打折扣了。 前段时间升级了Xcode8,整体来说对OC的影响不大,但是还是跳一个坑,消耗了不少时间。这里总结下遇到的适配问题。 1、权限问题   Xcode8 访问相机、相册等需要权限的地方崩溃   解决办法:   在使用私有权限时,添加Info.plist文件中添加配置: 下面是各种key,需要哪个添哪个   NSBluetoothPeripheralUsageDescription   NSCalendarsUsageDescription 选择创建单个APP 填写项目名称Product Name,选择您的团队Team,填写组织名称Organization Name,填写组织id Organization Identifier(格式为:com.公司名.项目名称),然后创建。 新建的项目是由故事板来呈现的,其中存在Main.storyboard,建立纯代码要... Xcode的Storyboard用连线跳转界面非常方便,但是有时候直接连线不能解决所需要的问题,直接用presentViewController方法跳转Storyboard中的VC会导致黑屏。 原因:Storyboard在创建第二个视图对应的类时系统自动重写了-(void)viewDidLoad这个方法,而presentViewController这个方法是不允许重写-(void)viewDi... 1、修改AppDelegate.h文件如下 2、修改AppDelegate.m文件如下,当然逻辑随你自己,#pragma mark - UISceneSession lifecycle下的两个方法删掉 3、修改main文件具体如下 4、修改info.plist文件如图(新版本的工程信息都不在plist里面了,在target->info 里面)