我有如下的UITableViewCell设置:
带有日期,分隔线(UIView)和文本字段的图像。约束设置如下:
图像:引脚顶部顶部,尾部和前缘,宽高比已启用。
日期:引脚到顶部(图像),前导,固定高度和宽度
分隔线:引脚到顶部(日期),尾随,前导,固定高度
文字:从顶部到顶部(分隔线),底部,尾随,前导,固定高度
我希望单元格根据内容的大小动态更改大小,所以在我的UITableViewController中我有:
tableView.estimatedRowHeight = 254
tableView.rowHeight = UITableViewAutomaticDimension
我已经为iPhone4,iPhone5和iPhone6测试了它。一切正常。但是对于iPhone6 +,我在控制台中收到错误: 在UIViewAlertForUnsatisfiableConstraints上创建一个符号断点,以便在调试器中捕获它。 在列出的UIView上的UIConstraintBasedLayoutDebugging类别中的方法也可能有所帮助。
虽然它在模拟器中看起来很好。我在这里做错了什么?如果单元格和视图的大小正确适用于其他手机大小,那么为什么它会破坏6 +?
关于此的任何指示都会很棒!
答案 0 :(得分:1)
我相信您了解自动布局约束的工作原理。自动布局约束只不过是数学表达式,每次你的视图布局时都会对它们进行评估。
在您的情况下,您的约束说: 调整大小后的图像高度图像保持宽高比+日期选取器高度(固定)+设备高度(固定)+文本字段高度+从文本字段到底部布局指南的距离(固定)=行高;
现在这将显着破坏自动布局约束,因为您已指定固定从底部布局到文本字段的距离。
这里发生的是,无论行的大小如何,ios都会尝试保持textfield bottom和行底部之间的固定距离。这将导致约束链断裂。
这种约束完全没有必要。因为你已经通过将引脚放到顶部(分隔线),尾随,前导,固定高度来指定文本字段的minal必需约束:)
尽管删除约束将解决约束破坏问题,但您的设计伙伴仍然存在问题。
快乐编码:)
答案 1 :(得分:1)
尝试将确定高度的其中一个约束的优先级更改为999而不是1000.例如,从最后到最低的约束。它通常会消除约束破坏的问题,而单元格正在计算它的高度并且看起来一样。