cell的默认高度导致masonry布局约束冲突的解决办法

最近工程升级到支持iOS8及以上,cell高度可以使用自动计算高度了

//iOS8以后自动计算cell高度的方法,同时cell上各个控件垂直方向上的约束要完整
self.tableView.estimatedRowHeight = 100;
self.tableView.rowHeight = UITableViewAutomaticDimension;

第一个tableView上没啥问题,第二个看起来也没啥问题,布局显示很正常;but真机调试时忽然发现控制台上打印了一些约束冲突,查看只有第二个才出现了约束冲突。what? 于是查找观察2个tableViewCell布局上有什么区别,第一个简单一些,但第二个约束也不应该有什么问题啊,对比控制台上打印的信息查找冲突原因,发现有一项tableViewCell.contentView.height = 44 ,考虑可能是这个cell默认高度导致的。
然后谷歌上收索一下,发现确实有不少开发者遇到了这个问题,按他们的解决办法,

//设置cell自适应
self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

添上之后运行,结果发现然并卵,还是报冲突。不死心继续在谷歌上查找,发现大部分都是上面的解决办法,偶然看到一条设置优先级的信息,果断试验一下,把报冲突的那个约束的优先级设置高一些(默认的约束优先级是750),再次运行发现果然不在冲突了。
个人感觉是设置了一个更高的优先级后,cell的默认高度因优先级低的问题会被抵消掉,从而冲突消失了。

你可能感兴趣的:(cell的默认高度导致masonry布局约束冲突的解决办法)