国庆前我也适配了一下iOS9,由于时间比较匆忙,没来得及做笔记,今天稍微花点时间整理了一下思路,写了这篇适配iOS9的博客,当作是笔记吧
1,NSAppTransportSecurity
iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输。直接造成的情况就是App发请求的时候弹出网络无法连接。解决办法就是在项目的info.plist 文件里加上如下节点:
NSAppTransportSecurity - NSAllowsArbitraryLoads
这个子节点的意思是:是否允许任性的加载?! 设为YES的话就将禁用了AppTransportSecurity转而使用用户自定义的设置,这个问题就解决了。
2,用Xcode7提交审核遇到 ITMS-90535 错误
删除相关的Info.plist即可,一般是不小心打包进去的。比如ShareSDK里附带的TencentOpenApi_IOS_Bundle.bundle/Info.plist,(特别注意:如果这种情况下删掉了CFBundleExecutable但是app无法安装了,真机上也跑不起来了,这个问题你肯定是删了自己项目的Info plist里面的Key)如下图:
3,提交到itunes Connect时报错---“1 本地化存在错误。”
如图
问题分析:你的app某些必须填的信息没有填,把没有填的补充完整就好了(注意:以前默认是只有一个版本的,当我在升级Xcode7和适配iOS9以后,这里弹出两个版本,而且默认是繁体,于是我又加了个简体版本,忘记一些必须填的信息没有填,所以报这个错误)如图吧:
4,iOS9字体微变后对文字稍微变大,对有些写死的label会出现"..."的情况
iOS8中,字体是Helvetica,中文的字体有点类似于“华文细黑”。只是苹果手机自带渲染,所以看上去可能比普通的华文细黑要美观。iOS9中,中文系统字体变为了专为中国设计的“苹方” 有点类似于一种word字体“幼圆”。字体有轻微的加粗效果,并且最关键的是字体间隙变大了!
所以很多原本写死了width的label可能会出现“...”的情况。
为了在界面显示上不出错,就算是固定长度的文字也还是建议使用sizetofit 或者ios向上取整 ceilf() 或者提前计算
CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}];
CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));
5,Bitcode
bitcode的理解应该是把程序编译成的一种过渡代码,然后苹果再把这个过渡代码编译成可执行的程序。bitcode也允许苹果在后期重新优化我们程序的二进制文件,有类似于App瘦身的思想。
用了xcode7的编译器编译之前没问题的项目可能会出现下列报错。
1
|
XXXX’ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode
for
this
|