适配iOS9系统
2015-10-11 10:19
453 查看
随着iOS系统的发布,很多应用不得不做出适配iOS9的改善。需修改6方面的内容
一、字体:iOS9 字体变得美观当字体间隙变大
在同一个label中显示的字体个数因间隙变大而有的文字不显示。所以建议
使用sizetofit 或者ios向上取整 ceilf() 或者提前计算
二、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的编译器编译之前没问题的项目可能会出现下列报错。
问题的原因是:某些第三方库还不支持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没做适配 会报如下错误:
具体的解决方案也是要在info.plist中设置 LSApplicationQueriesSchemes 类型为数组,添加所有你用到的scheme,用字符串NSString类型添加访问网站名
六、tableView
虽然现在的iOS9已经推送正式版了,但是iOS9使用时还是会感觉到App比以前更加卡顿了,tableView拖动时卡顿显示的最为明显。 并且之前遇到一个bug,原本好的项目用xcode7一编译,tableView刷新出了问题 ,[tableView reloadData]无效 有一行cell明明改变了但是刷新不出来。 感觉可能是这个方法和某种新加的特性冲突了,猜测可能是reloadData的操作被推迟到下一个RunLoop执行最终失效。解决的方法是,注释[tableView
reloadData],改用局部刷新,问题居然就解决了。
在网上查询到的结果,跟大家分享分享!
一、字体: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],改用局部刷新,问题居然就解决了。
在网上查询到的结果,跟大家分享分享!
相关文章推荐
- iOS音频录制基础
- iOS --- 关于SandBox机制及文件读写的几种方式
- iOS音频播放基础
- ios访问手机通讯录获取联系人手机号
- iOS地图和定位服务(自定义大头针)
- ios 地图与定位(用户位置)
- 【IOS 开发学习总结-OC-40】★★ios开发之事件机制——控件获取方式与事件处理方式
- 线程间通信
- KVO入门介绍
- JS仿IOS风格对话框源码范例
- iOS 开发笔记-报错处理
- 原子和非原子属性
- 多线程的安全隐患
- iOS-关于页面跳转时全局变量赋值不到的问题
- [iOS]圆形进度条及计时功能
- IOS 播放音乐
- 苹果开发 笔记(80)升级IOS 9 和 XCode 7 引起的问题记录
- DSP/BIOS入门
- iOS开发者账号详细介绍
- iOS之Block