iOS 10关于Masonry的适配问题

iOS10.0系统发布后,做了一些简单的适配工作(权限,UILabel的大小,导航栏的tintColor等),立即发布了一个简单的适配版本。昨天晚上进行新版本测试(适配了通知)突然发现自动布局不好使了。项目中很多地方用到了自适应cell,在iOS10.0之前都是完美运行的。如果此时换成手动计算高度实现自适应,这个工程量还是比较大的。无奈研究了一晚上,终于找到了在iOS10下关于Masonry实现自适应的解决办法。

在stackOverFlow上并没有找到详细的解决方案,于是果断去了gitHub找到Masonry的作者主页上看开发者有没有对Masonry提了新的问题,果然.....

Snip20180711_12.png
Snip20180711_13.png

下面是我的项目在iOS10下出现的显示紊乱的情况

Snip20180711_16.png
Snip20180711_19.png

这是之前在10.0下出问题的代码

[viewBG mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(self.contentView).offset(10*ScaleScreenH);
    make.right.equalTo(self.contentView).offset(-10*ScaleScreenH);
    make.top.equalTo(self.contentView);
    make.height.equalTo(@(viewBG.height));
}];

[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(self);
    make.right.equalTo(self);
    make.top.equalTo(self);
    make.bottom.equalTo(viewBG).offset(15*ScaleScreenH);
}];

只需要做一个调整,对于viewBG的底部约束,不能写在contentView的约束里了。至于为什么,我也不清楚,对UIView的底层研究还没有那么深......

改完之后的代码

[viewBG mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(self.contentView).offset(10*ScaleScreenH);
    make.right.equalTo(self.contentView).offset(-10*ScaleScreenH);
    make.top.equalTo(self.contentView);
    make.height.equalTo(@(viewBG.height));
    make.bottom.equalTo(self.contentView).offset(-15*ScaleScreenH);
}];

[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(self);
}];

改完之后正常运行的效果图

Snip20180711_20.png
Snip20180711_21.png

最后一点问题,如果你的项目里有UICollectionView和UIPageControl的使用,在iOS10下,也会出现问题,断点测试后发现indexPath.item的属性值是随机变的(打印出来的数据是0可能直接跳到2,或者3直接跳到0。因为iOS10也对UICollectionView的渲染做了改变。当我们编译iOS 10的app的时候,这个Pre-Fetching默认是enable的。当然,如果有一些原因导致你必须用到iOS 10之前老的生命周期,你只需要给collectionView加入新的prefetchingEnabled属性即可。如果你不想用到Pre-Fetching,那么把这个属性变成No即可。
这里需要设置一下prefetchingEnabled属性为NO(默认是YES)。

self.contentCollectionView.prefetchingEnabled = NO;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容