【发布时间】:2013-05-16 11:47:48
【问题描述】:
我有一个包含一堆单元格的表格视图(自定义单元格,只有它的内容视图)。
在tableView:cellForRowAtIndexPath: 中,我将一个预定义的 UIView(它有几个子视图)添加到自定义单元格的内容视图中。我之前为 UIView 及其子视图设置了所有约束。
最后但同样重要的是,我为自定义单元格的内容视图(超级视图)和之前添加的 UIView(子视图)设置了垂直和水平约束。
约束字符串如下所示:
H:|[view]|
V:|[view]|
不幸的是,我仍然获得所有表格视图单元格的默认高度。我想知道是否有办法让自动布局根据内容大小自动计算高度。
【问题讨论】:
-
没有。您需要实现
tableView:heightForRowAtIndexPath并返回一个高度,否则将使用单元格的默认高度。 -
有没有办法让视图决定它应该得到哪个高度?
-
如果您使用自定义
UITableViewCells,您可以在子类中创建一个返回该单元格高度的方法,然后在tableView:heightForRowAtIndexPath中调用该方法。显然,尽量让计算快速高效(如果计算非常复杂,可能会预先计算任何更改的结果并缓存结果)。 -
感谢您的回答。不幸的是,计算单元格内容对我来说不是解决方案。问题是,我不知道视图里面是什么。
-
也许在未来的 iOS 版本中,他们会更新 tableview 单元格的工作方式,但是(从 iOS 6 开始)您需要混合使用这两种方法。祝你的应用好运。
标签: ios uitableview autolayout nslayoutconstraint row-height