·引起黑屏现象的原因分析:
原因:
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 里面)