您的位置:首页 > 移动开发 > IOS开发

项目适配iOS9

2015-09-23 14:56 453 查看
转载_会飞的鱼文章

1.网络请求报错。

升级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

2.Bitcode问题

原因:Xcode7 及以上版本会默认开启 bitcode 。

bitcode具体是什么就不解释了。

解决方法:

1.更新library使包含Bitcode,否则会出现以上的警告。

2.关闭Bitcode,简单粗暴。

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




20150917113544983.jpg

3.项目运行报错如下

<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 或者删除应用程序 重新运行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: