1. 程式人生 > >iOS masonry佈局在iOS11上正常 iOS9卻異常

iOS masonry佈局在iOS11上正常 iOS9卻異常

使用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版本號原因導致的問題佈局差異的問題