每次出了新系统,必然要踩很多坑,这次来踩一踩iOS10的坑吧。
一、证书问题
- 直接选择Automatically manage signing让Xcode帮我们管理证书就好了。
- 未设置开发者账号会报错,在偏好设置中添加好就可以了。
- 使用真机测试时,必须在官网中添加设备的UDID。
二、Xib文件
- 使用Xcode8 打开xib文件是会出现“choose an initial device view”的提示,直接选择蓝色的 choose Device 就可以了。
2)如果布局混乱,在xib的右下角更新一下,即 Update Frame。
三、代码及API
- UIView的代理方法可能会出现报错,删除NSError前面的 nullable就行了。
- UIStatusBar的方法过期了,如果项目中设置了statusBar,那就像下面这样写:
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleDefault;
}
- UIColor新增了方法,使颜色更加多样化了。
+ (UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);
- (UIColor *)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);
UITextField增加了textContentType,一个枚举类,可以设置文本输入区域所期望的语义。
UIScrollView增加了刷新功能 refreshControl,iOS10以后只要继承UIScrollView就支持刷新。
iOS10,系统版本可是两位数了,判断系统版本最好还是直接用这个方法比较靠谱:
[[UIDevice currentDevice] systemVersion]
- Xib "awakeFromeNib"使用这个方法会出现警告,按照提示加上[Super awakeFromeNib]就可以了。
四、Xcode8 输出很多没用的东西
关于这个问题,打开Edit Scheme -> run -> Environment Variables
在这个地方添加 key: OS_ACTIVITY_MOOE value:disable 然后把前面的小方框勾选上即可。(如果不行就取消勾选,再选中,重复一下)
五、字体变化
经过测试,中文字体变大了一些,怎么适配呢。。。这个我也只能去找哪里不对然后更改了。(当然,如果你的工程中用到的 leabel 都是添加的上下左右的约束,没有固定它的长宽,当然就没关系了。)
六、隐私权限
iOS10对隐私权限更加严格,在plist文件中添加相应的Key - Value:
麦克风权限: Microphone Usage Description 是否允许此App使用你的麦克风?
相机权限: Camera Usage Description 是否允许此App使用你的相机?
相册权限: Photo Library Usage Description 是否允许此App访问你的媒体资料库?通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?
蓝牙权限: Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?
语音转文字权限: Speech Recognition Usage Description 是否允许此App使用语音识别?
日历权限: Calendars Usage Description 是否允许此App使用日历?
定位权限: Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
定位权限: Location Always Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
大概就这些了。
七、ATS的问题
自2017年1月1日起,必须使用HTTPS请求,这只能建议大家都用HTTPS。可以通过NSExceptionDomains 针对特定域名开放。
八、 UICollectionView的优化
增加了Pre-Fetching ,进行预加载。
WWDC2016 Session笔记 - iOS 10 UICollectionView新特性
九、 通知
- 增加了UserNotification.framework
- 增加了撤销、更新,中途可以修改通知的内容。
- 通知中可以加入视频、图片、自定义通知的展示。
- 本地与远程集成在一个方法中,很方便。