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

适配iOS9系统

2015-10-11 10:19 453 查看
随着iOS系统的发布,很多应用不得不做出适配iOS9的改善。需修改6方面的内容

一、字体:iOS9 字体变得美观当字体间隙变大

在同一个label中显示的字体个数因间隙变大而有的文字不显示。所以建议

使用sizetofit 或者ios向上取整 ceilf() 或者提前计算
<span style="font-family:Times New Roman;font-size:18px;">{
// 设置字体
CGSize size = [@"这是需要设置的字体" sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:13]}];
CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));
}</span>


二、NSAppTransportSecurity
iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输。直接造成的情况就是App发请求的时候弹出网络无法连接。例如:iOS9 兼容 bmob 方法,在Info.plist中添加NSAppTransportSecurity类型Dictionary。

在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES。在 Info.plist 中设置好 ,bmob 就能继续用了
三、Bitcode

bitcode的理解应该是把程序编译成的一种过渡代码,然后苹果再把这个过渡代码编译成可执行的程序。bitcode也允许苹果在后期重新优化我们程序的二进制文件,有类似于App瘦身的思想。
用了xcode7的编译器编译之前没问题的项目可能会出现下列报错。
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
target.
for
architecture arm64


问题的原因是:某些第三方库还不支持bitcode。要不然是等待库的开发者升级了此项功能我们更新库,要不就是把这个bitcode禁用。
禁用的方法就是找到如下配置,选为NO.(iOS中bitcode是默认YES,watchOS中bitcodes是不让改的必须YES。)
四、设置信任
这一条只和企业级应用或inhose 有关,和AppStore渠道的应用无关。
在iOS8只是弹出一个窗问你是否需要让手机信任这个应用,但是在iOS9却直接禁止,如果真的想信任需要自己去手动开启。类似于Mac系统从未知开发者处下载的dmg直接打不开,然后要到系统偏好设置的安全性与隐私手动打开。 用户需要去 设置---》通用---》描述文件 里面自行添加信任。这种问题的处理方法也就两种:1.提前周知暂时不要升级iOS9
2.大多是公司员工使用的企业级应用,群发一个指导邮件。
五、URL scheme

URL scheme一般使用的场景是应用程序有分享或跳其他平台授权的功能,分享或授权后再跳回来。
在iOS8并没有做过多限制,但是iOS9需要将你要在外部调用的URL scheme列为白名单,才可以完成跳转
如果iOS9没做适配 会报如下错误:
canOpenURL: failed
for
URL :
"mqzone://qqapp"
-
error:
"This app is not allowed to query for scheme mqzone"


具体的解决方案也是要在info.plist中设置 LSApplicationQueriesSchemes 类型为数组,添加所有你用到的scheme,用字符串NSString类型添加访问网站名
六、tableView
虽然现在的iOS9已经推送正式版了,但是iOS9使用时还是会感觉到App比以前更加卡顿了,tableView拖动时卡顿显示的最为明显。 并且之前遇到一个bug,原本好的项目用xcode7一编译,tableView刷新出了问题 ,[tableView reloadData]无效 有一行cell明明改变了但是刷新不出来。 感觉可能是这个方法和某种新加的特性冲突了,猜测可能是reloadData的操作被推迟到下一个RunLoop执行最终失效。解决的方法是,注释[tableView
reloadData],改用局部刷新,问题居然就解决了。

在网上查询到的结果,跟大家分享分享!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: