美文网首页SwiftiOS开发文章iOS 开发~项目常用,经典内容收集
项目适配iOS9遇到的一些问题及解决办法(持续更新)

项目适配iOS9遇到的一些问题及解决办法(持续更新)

作者: _会飞的鱼 | 来源:发表于2015-09-22 15:25 被阅读42837次

网络请求报错。

升级Xcode 7.0发现网络访问失败。
输出错误信息
#warning: 获取app配置信息失败: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
原因:iOS9引入了新特性App Transport Security (ATS)。
详情:App Transport Security (ATS)
新特性要求App内访问的网络必须使用HTTPS协议。
但是现在公司的项目使用的是HTTP协议,使用私有加密方式保证数据安全。现在也不能马上改成HTTPS协议传输。
最终找到以下解决办法:
在Info.plist中添加NSAppTransportSecurity类型Dictionary。 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES

2F5721B6-2C74-4B59-84B3-7D77C541038F.png

Bitcode问题

原因:Xcode7 及以上版本会默认开启 bitcode 。
bitcode具体是什么就不解释了。
解决方法:
1.更新library使包含Bitcode,否则会出现以上的警告。
2.关闭Bitcode,简单粗暴。

Build Settings”->”Enable Bitcode”改成"NO"。

20150917113544983.jpg

项目运行报错如下

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
出错原因:设置app的状态栏样式的使用使用了旧的方式,在info.plist里面设置了View controller-based status bar appearance为NO,默认为YES,一般式iOS6的时候使用这种方式,iOS7,8也兼容,但是到了iOS9就报了警告。

解决办法:

删除 原先的设置代码
//设置状态栏的白色 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

修改方式将View controller-based status bar appearance设置为YES,然后使用新的方式来实现状态栏的样式。

2F5721B6-2C74-4B59-84B3-7D77C541038F.png

在你的 自定义导航控制器里面 写上如下方法:
//设置状态栏的(亮色)白色
-(UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
记住要clean 或者删除应用程序 重新运行

升级Xcode 7 之后 ios 9 模拟器 一启动程序 就直接报错

报错如下
***** Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294**

原因:

新的SDK不允许在设置rootViewController之前做过于复杂的操作,导致在didFinishLaunchingWithOptions 结束后还没有设置rootViewController
Xcode7需要所有UIWindow必须立即先设置一个rootViewController

解决办法:
先设置个rootVIewController 之后重新赋值
UIWindow *window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds]; window.rootViewController = [UIViewController new];

相关文章

网友评论

  • ios开发者:替换https还是出现#warning: 获取app配置信息失败: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
    这个错误,是什么原因?
  • QDboys:关于那个状态栏的操作 我这边有点问题 能不能给讲解一下
  • Wei丨微冷丶:第一张图放错了 :yum:
  • King_92_明: :+1: 解决了我的问题
  • 那绒绒雪花:谢谢了,这个问题都快烦死我了,网上各种查找,重要的事说一遍谢谢了,再问一下,你有获取PDF文件目录并且跳转页面的 demo 吗,有的话,共享一下呗
    04de375c7dad:@那绒绒雪花 怎么解决的啊 求解,我是了 但是貌似还是有问题
  • Joe_lisa:确实,好像也还是报错的,不奏效的-(UIStatusBarStyle)preferredStatusBarStyle
    {
    return UIStatusBarStyleLightContent;
    }
    King_92_明:@developer_x :relaxed: 我的rootVC是在导航,写了在导航类中是有效的哦
    Aikesi26:@Joe_lisa 你 的控制器是不是被导航控制器包含了
  • 潸何吊:楼主 关于状态栏颜色 请问将View controller-based status bar appearance设置为YES后 再调用那个方法后并没有什么效果 ?
    King_92_明:@潸何吊 你的最底层的写了吗?
    潸何吊:@有个烦人的小猫咪 写在某个对状态栏颜色有要求的控制器里呀
    fankang:@潸何吊 怎么会没效果?你的重写preferredStatusBarStyle 写在哪里了?
  • 士梦:牛,大赞

本文标题:项目适配iOS9遇到的一些问题及解决办法(持续更新)

本文链接:https://www.haomeiwen.com/subject/qjeicttx.html