iOS masonry佈局在iOS11上正常 iOS9卻異常
阿新 • • 發佈:2018-11-14
使用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版本號原因導致的問題佈局差異的問題