iOS app 适配问题总结

来源:互联网 发布:网络舆情队伍建设 编辑:程序博客网 时间:2024/06/11 21:57
1) 坐标设定问题:以屏幕左上角为原点(iOS7以前在状态栏或者导航条下)。
适配的部分实现代码如下:
判断当前IOS设备的系统版本

2) 隐藏顶部状态栏问题:IOS6隐藏状态栏时,原来状态栏的位置会出现空白部分。IOS7及其以后的版本页面视图会上调,覆盖原来状态栏的位置。

3) IOS7的边沿延展新特性。在IOS7下,控制器的视图会被导航条掩盖住。IOS6则不会出现这类问题。
取消IOS7的边沿延展特性
4)  IOS7界面自动布局特性。在系统的XIB视图文件中将布局配置Use AutoLayout选项取消勾选

在iOS 8中,[UIScreen bounds] 、[UIScreen applicationFrame] 、Status bar、Keyboard这些frame都是根据设备真实方向来返回frame的,而在iOS 7中,不过是横屏还是竖屏,iOS总是返回竖屏的frame,这就对某些支持横屏的App造成了困扰,其实也只需要加两个宏或者改造一下就行了:

iOS8 和 iOS7 对 automaticallyAdjustsScrollViewInsets 属性的解释不一样
* iOS8 会把该属性的影响作用到 controller 的 view 的 subviews 上
* iOS7 仅会作用到 self.view 上
* 另外当你还需要手动调用 contentInset 的时候,iOS7 似乎就不会自动调整了。解决办法就是将 automaticallyAdjustsScrollViewInsets 设置为 NO,然后自己控制 contentInset

iOS9适配中出现的坑
1  网络无法连接。解决办法就是在项目的info.plist 文件里加上如下节点     NSAppTransportSecurity - NSAllowsArbitraryLoads
2 设置信任
这一条只和企业级应用或inhose 有关,和AppStore渠道的应用无关。
在iOS8只是弹出一个窗问你是否需要让手机信任这个应用,但是在iOS9却直接禁止,如果真的想信任需要自己去手动开启。类似于Mac系统从未知开发者处下载的dmg直接打不开,然后要到系统偏好设置的安全性与隐私手动打开。
3 字体
iOS8中,字体是Helvetica,中文的字体有点类似于“华文细黑”。只是苹果手机自带渲染,所以看上去可能比普通的华文细黑要美观。iOS9中, 中文系统字体变为了专为中国设计的“苹方” 有点类似于一种word字体“幼圆”。字体有轻微的加粗效果,并且最关键的是字体间隙变大了!
所以很多原本写死了width的label可能会出现“...”的情况。
所以为了在界面显示上不出错,就算是固定长度的文字也还是建议使用sizetofit 或者ios向上取整 ceilf() 或者提前计算

4  URL scheme
URL scheme一般使用的场景是应用程序有分享或跳其他平台授权的功能,分享或授权后再跳回来。
在iOS8并没有做过多限制,但是iOS9需要将你要在外部调用的URL scheme列为白名单,才可以完成跳转
如果iOS9没做适配 会报如下错误

5  tableView
虽然现在的iOS9已经推送正式版了,但是iOS9使用时还是会感觉到App比以前更加卡顿了,tableView拖动时卡顿显示的最为明显。 并且之前遇到一个bug,原本好的项目用xcode7一编译,tableView刷新出了问题 ,[tableView reloadData]无效 有一行cell明明改变了但是刷新不出来。 感觉可能是这个方法和某种新加的特性冲突了,猜测可能是reloadData的操作被推迟到下一个RunLoop执行最终失效。
解决的方法是,注释[tableView reloadData],改用局部刷新,问题居然就解决了。
1
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
0 0
原创粉丝点击