有很多帖子询问如何让表格视图单元格高度动态,我知道我可以通过HeightForRowAtIndexPath
来完成。
我的问题是这是否是好的做法。
这似乎是一个无法解决的解决方案,检查设备和硬编码高度只是为了能够占用更多的空间让我们说iPhone 6 plus。
这是一种好的做法吗,它应该完成,还是有更好的方法? `
答案 0 :(得分:3)
您可以设置TableView
的高度乘以合适的分数。假设您为iPhone 6 Plus设计尺寸为1242×2208像素(414×736点)的单元格。现在你可以推断出当前正在运行的设备上的heightRatio w.r.t,如
let heightRatio = UIScreen.mainScreen().bounds.height / 736
因此,在heightForRowAtIndexPath
中,您可以将高度返回为
return yourInterfaceBuilderCellHeight * heightRatio
答案 1 :(得分:0)
你不应该假设你的代码硬编码为tableview单元格的高度。
你应该使用tableview单元格高度的完美计算来应用高度
如果您硬编码您的代码将来可能会出现问题,因此更好地练习每个单元格的动态大小
答案 2 :(得分:0)
如果您的数据保持静态或未动态更改,那么heightForRowAtIndexPath
的硬代码(给出静态高度)就可以了,但如果数据发生变化,则执行硬代码并不是一个好习惯。您需要计算每一行的高度,以便数据适合它。
答案 3 :(得分:0)
如果您的数据动态变化,并且您需要设置tableview单元格高度取决于该数据高度,那么 Apple 会为此提供解决方案。
只需将tableview属性设置为以下示例。
_tableViewOne.estimatedRowHeight = 50; //minimum row height
_tableViewOne.rowHeight = UITableViewAutomaticDimension;
所以它的行内容高度
。请勿使用tableview的heightForRowAtIndexPath方法 代码不起作用(它将覆盖这些属性)。
你不需要为高度做任何其他事情。系统将处理它。