iOS masonry布局在iOS11/12上正常 iOS9/10卻異常


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM