iOS 8 & iOS 11 版本差异bug记实

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/heipingguowenkong/article/details/81979789

引言:之前公司没有提供测试机,于是就在自己的iPhone7 (系统 iOS11) 上做开发测试了,一切效果完好。然而市场部总反应有一些问题。。。最近老板拿了个iPhone6点开应用问题一堆,一看系统版本iOS8。我意识到是系统版本问题,于是开始了爬坑之路。。。

1.项目采用xib加代码的方式实现,在iOS11上面一切完好,iOS上只要涉及button之类的交互控件xib与所在类文件绑定实现的点击方法,一点即crash。经过分析发现,iOS11之前的绑定如下:
这里写图片描述
button在父view上需要绑定fileOwner、xib文件,点击方法绑在xib文件上,这样才能在类文件中操作button控件的属性及点击方法;而iOS8上却发现原来fileOwner绑定没了,所以点击按钮就会崩溃;解决办法X掉之前的所有绑定,重新绑定下以上三项就ok。
2. tableview的视图层次发生了变化,iOS11中cell的superView是tableView;iOS8中,cell的superView是UItableviewWrapView,所以项目中若用到cell的superView来获取其所在的tableView那么就会出现问题。这一点要注意。
3. 关于分组类型的tableView,在iOS8中设置了tableView为Group类型,如果不设置tableView的sectionView及sectionTitle,只设置sectionHeaderHeight,那么会默认隐藏掉第一组的sectionHeaderHeight,tableView内容不会向下偏移一个sectionHeaderHeight的高度,但是iOS11中则不会自动忽略第一组的组头高度,内容会向下偏移一个组头的距离,设置sectionHeaderHeight也无效;那么如何解决呢??如果用了分组样式,在tableView返回sectionHeaderView的方法里,给一个view,就可以完美解决。
4. 有导航栏的控制器内铺满屏幕的tableView内容无故向下偏移,或上移被导航栏遮挡,在iOS11中会默认处理tableview的布局不被遮挡,iOS8中则不会自动帮我们处理:需要我们手动设定控制器的这两个属性设定布局规则: self.automaticallyAdjustsScrollViewInsets = YES;
self.edgesForExtendedLayout = UIRectEdgeBottom;
第一个属性设定控制器自动处理滚动视图的内容布局,第二属性设置布局的原点为导航栏的左下角。

希望能帮到大家!

猜你喜欢

转载自blog.csdn.net/heipingguowenkong/article/details/81979789
ios
今日推荐