FDTemplateLayoutCell在iOS10.3模拟器上高度计算不准

使用UITableView-FDTemplateLayoutCell来自动计算tableView中cell的高度十分方便,然而苹果更新了10.3系统后,如果使用xib自定义cell的方式,它就不准了,控制台会输出警告信息……

log警告


[LayoutConstraints] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "",
    ""
)

Will attempt to recover by breaking constraint 
```

**原因**
***
iOS 10.3 以后,如果调用系统的 systemLayoutSizeFittingSize 方法,系统会自动给 contentView 加 width height 两个约束,这两个约束的值跟 xib 的 view size 一样。
这就导致了自定义 cell 中一个可变高度 label 的宽度约束依赖 contentView 的宽度时,而 contentView 有个错误的宽度约束,导致计算错误。

**解决办法**
***
在自定义cell的awakeFromNib方法中添加:

self.contentLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20;```

UITableView-FDTemplateLayoutCell的issues里有关于这个问题的讨论。

你可能感兴趣的:(FDTemplateLayoutCell在iOS10.3模拟器上高度计算不准)