我在代码中完全创建我的UI并使用Masonry将单元格的内容视图的子视图约束到适当的高度。我正在使用UITableViewCell的contentView获取不需要的“height == 44”约束
[cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height
iOS 7为行高,而iOS 8自动处理它。
一切看起来应该与屏幕上显示的一样,但在控制台中,我得到了有关冲突约束的警告列表,这些警告似乎都是由单元格内容视图上未激活的和不必要的高度约束(例如<NSLayoutConstraint UITableViewCellContentView.height == 44>
)引起的。
在iOS 8上,我将表格视图的rowHeight
设置为UITableViewAutomaticDimension
(实际为-1
),但我仍然得到这个约束。我只是在内容视图和它自己的子视图之间添加约束,所以内容视图和单元本身之间没有约束。
任何想法,这个约束来自哪里,以及如何使它消失?
编辑:现在我居然找到了各种各样的“解决方案” - 内容视图的框架最初设置的东西可笑,像CGRectMake(0, 0, 99999, 99999)
,添加子视图或约束之前,似乎使警告消失。但是,这并不完全嗅觉到正确的方式,所以任何人都可以告诉更好的方法?
我有这个问题,并尝试这个答案,但我仍然得到错误:(我使用Snapkit BTW “”。 –
2016-03-04 20:48:37
每HTTPS: //github.com/Alex311/TableCellWithAutoLayout/commit/bde387b27e33605eeac3465475d2f2ff9775f163#commitcomment-4633188这不是一个最佳的解决方案,请参阅我的解决方案,而不是 – 2016-06-03 00:38:29
只设置估计行高解决了我的问题self.tableView.estimatedRowHeight = 120谢谢Maricel – crazywood 2016-08-18 07:53:21