使用masonry布局,可以布局一套,適配所有機型,但是有時候會出現一些比較特殊的情況,每次iOS11上面開發,開發完成之后,在iOS9,iOS10上查看的時候發現布局與iOS11不完全一致,有的高度計算錯誤,有的label無法換行等問題,這種問題困擾了很久,以前的解決方案是針對版本單獨適配,甚至有時候使用靜態高度來解決,最近在寫一些復雜頁面的時候,發現還是會有這個問題,於是決心要找到解決辦法
在masonry github的issue中我發現有些網友提出了類似的問題,更多討論詳情請參考
https://github.com/SnapKit/Masonry/issues/382
https://github.com/forkingdog/UITableView-FDTemplateLayoutCell/issues/242
我這里給出幾個解決上述問題的方法
1.計算高度異常,可以使用靜態高度,給cell默認高度
2.contentView布局一下
[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
3.初始化cell的時候讓cotentView layoutIfNeeded
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self setupUI];
[self.contentView layoutIfNeeded];
}
return self;
}
以上3中方法都可以解決masony由於iOS版本號原因導致的問題布局差異的問題