IOS8与IOS9不同点
2016-03-12 13:27
706 查看
苹果更新了ios9有一段时间了,最近总结了一下平时项目中遇到的一些ios9适配问题,分析一下ios8与ios9的不同点:
1. App Transport Security Settings
即NSAppTransportSecurity,IOS9中为了加强为了强制增强数据访问安全,默认会把 HTTP
请求,都改为 HTTPS 请求,原来的HTTP协议传输都改成TLS1.2协议进行传输,直接造成的情况就是App发请求的时候弹出网络无法连接。解决办法就是在项目的info.plist
文件里自己输入如下节点:
然后自己更新Xcode7.3后发现苹果更新成如下:
2. URLscheme
在iOS9中,如果使用URL scheme必须在"Info.plist"中将你要在外部调用的URL scheme列为白名单,否则不能使用。key叫做LSApplicationQueriesSchemes ,键值内容是
推荐一篇博客: http://awkwardhare.com/post/121196006730/quick-take-on-ios-9-url-scheme-changes
其中最关键的是以下部分:
[[UIApplication
sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UIApplication
sharedApplication]setStatusBarHidden:YES];
但是这么做之前需要将 info.plist 里面加上View controller-based status bar appearance BOOL值设为NO,就是把控制器控制状态栏的权限给禁了,用UIApplication来控制。
但是这种做法在iOS9不建议使用了,建议我们使用把那个BOOL值设为YES,然后用控制器的方法来管理状态栏比如。
- (UIStatusBarStyle)preferredStatusBarStyle{
return
UIStatusBarStyleLightContent;
}
4.字体
iOS9中,中文系统字体变为了专为中国设计的“苹方”,字体有轻微的加粗效果,并且最关键的是字体间隙变大了!
所以很多原本写死了width的label可能会出现“...”的情况。
包括在很多时候我们自动计算行高行宽的时候出现偏差,导致一些不可知的错误
CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}];
CGSize adjustedSize =
CGSizeMake(ceilf(size.width),
ceilf(size.height));
5.NSURLConnection
IOS9后, 苹果用NSURLSession替代了NSURLConnection。如果项目以前使用过这些API,建议立即升级到基于 NSURLsession 的API的AFNetworking的版本。
6.bitcode
bitcode的理解应该是把程序编译成的一种过渡代码,然后苹果再把这个过渡代码编译成可执行的程序。bitcode也允许苹果在后期重新优化我们程序的二进制文件,有类似于App瘦身的思想。问题的原因是:某些第三方库还不支持bitcode,要不就是把这个bitcode禁用。
解决方法方法一:更新library使包含Bitcode,否则会出现以下中的警告;
解决方法方法二:把这个bitcode设为禁用
1. App Transport Security Settings
即NSAppTransportSecurity,IOS9中为了加强为了强制增强数据访问安全,默认会把 HTTP
请求,都改为 HTTPS 请求,原来的HTTP协议传输都改成TLS1.2协议进行传输,直接造成的情况就是App发请求的时候弹出网络无法连接。解决办法就是在项目的info.plist
文件里自己输入如下节点:
然后自己更新Xcode7.3后发现苹果更新成如下:
2. URLscheme
在iOS9中,如果使用URL scheme必须在"Info.plist"中将你要在外部调用的URL scheme列为白名单,否则不能使用。key叫做LSApplicationQueriesSchemes ,键值内容是
其中最关键的是以下部分:
3.statusbar
以前我们为了能够实时的控制顶部statusbar的样式,可能会在喜欢使用[[UIApplication
sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UIApplication
sharedApplication]setStatusBarHidden:YES];
但是这么做之前需要将 info.plist 里面加上View controller-based status bar appearance BOOL值设为NO,就是把控制器控制状态栏的权限给禁了,用UIApplication来控制。
但是这种做法在iOS9不建议使用了,建议我们使用把那个BOOL值设为YES,然后用控制器的方法来管理状态栏比如。
- (UIStatusBarStyle)preferredStatusBarStyle{
return
UIStatusBarStyleLightContent;
}
4.字体
iOS9中,中文系统字体变为了专为中国设计的“苹方”,字体有轻微的加粗效果,并且最关键的是字体间隙变大了!
所以很多原本写死了width的label可能会出现“...”的情况。
包括在很多时候我们自动计算行高行宽的时候出现偏差,导致一些不可知的错误
CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}];
CGSize adjustedSize =
CGSizeMake(ceilf(size.width),
ceilf(size.height));
5.NSURLConnection
/*** DEPRECATED: The NSURLConnection class should no longer be used. NSURLSession is the replacement for NSURLConnection ***/
IOS9后, 苹果用NSURLSession替代了NSURLConnection。如果项目以前使用过这些API,建议立即升级到基于 NSURLsession 的API的AFNetworking的版本。6.bitcode
bitcode的理解应该是把程序编译成的一种过渡代码,然后苹果再把这个过渡代码编译成可执行的程序。bitcode也允许苹果在后期重新优化我们程序的二进制文件,有类似于App瘦身的思想。问题的原因是:某些第三方库还不支持bitcode,要不就是把这个bitcode禁用。
解决方法方法一:更新library使包含Bitcode,否则会出现以下中的警告;
相关文章推荐
- kidd风的IOS日志之Source Tree的使用教程
- iOS之Runtime
- iOS开发--正则表达式
- iOS中.PCH文件的配置及使用
- iOS注册远程推送消息证书后提示此证书签发者无效的解决办法
- iOS注册远程推送消息证书后提示此证书签发者无效的解决办法
- iOS注册远程推送消息证书后提示此证书签发者无效的解决办法
- iOS 开发--添加工程
- IOS开发随笔2
- iOS成员变量、成员属性和点语法
- iOS子视图捕获到的touches如何让父视图响应
- IOS上架流程
- IOS Xcode7.1新建纯代码工程
- CoreData简单实用
- IOS学习之设置NSZombieEnabled和MallocStackLogging解决EXC_BAD_ACCESS错误
- IOS开发随笔
- iOS开发学习笔记
- iOS plist 文件的读写
- iOS多线程
- iOS中事件传递