最近发现ios7的坑真的很多,做ios7的适配也不容易。
1、auto layout虽然在ios7已经算是完善,但是如果用Aspect Ratio呢?
如果用Aspect Ratio的话会发现,设置某些比例在一些时候会令程序崩溃,这种崩溃比较随机。我就试过2:1的比例在一些页面崩溃,改成2.002居然就没事。stackoverflow上的解释说ios7 AutoLayout在处理浮点数的时候有问题导致这种bug,ios8以上的版本已经没有问题了。一时间欲哭无泪。
解决办法还是有的:
1)不用Aspect Ratio。这个是彻底避免这个坑的终极方法。可以产品经理逼着你做适配,这个方案似乎不太可能。只能在可不用Aspect Ratio的时候尽量不用。
2)采用系统给定的比例。经过实践发现,只要是系统自己生成的比例,一般是不会发生崩溃的。例如自己设定的320:40会崩溃,但是系统生成的8:1居然就不崩了。有人说系统默认生成的比例是当前比例,一般都要手动调整啊。我现在的做法是先把高的约束确定下来(例如定height =200),再设置Aspect Ratio,最后把高的约束删掉,这样Aspect Ratio就不用调整了。
2、tableview 的backgroundview不能响应事件
在ios7中,把一个带button的view放到tableview中的backgroundView,button是没有办法响应的,ios5\6\8\9都不会有这个问题。
解决办法:
[tableview addsubview:view]就可以解决。
3、frame里面的浮点数运算混乱
尝试过把label.frame里面的x自加2.75,结果x加了3,运算结果出现了问题。
解决方案:
声明一个CGFloat的全局变量专门用来运算,最后赋值给frame中的x即可。
除了ios7的问题,还遇到SDWebImage第三方库的问题。在UITableViewCell中自带的imageview通过sd获取网络图片时,只能显示到1张图片,靠视图滚动后可以陆续显示
解决方案:
1、在使用UITableviewCell自带的imageview显示图片时,最好不要用sd,自己写个简单的同步方法获取网络图片吧
2、不用UITableviewCell自带的imageview,自定义cell就没有这个问题。