ios swift - 表视图单元动态高度取决于设备

时间:2016-04-06 08:48:45

标签: ios uitableview height standards

有很多帖子询问如何让表格视图单元格高度动态,我知道我可以通过HeightForRowAtIndexPath来完成。

我的问题是这是否是好的做法。

这似乎是一个无法解决的解决方案,检查设备和硬编码高度只是为了能够占用更多的空间让我们说iPhone 6 plus。

这是一种好的做法吗,它应该完成,还是有更好的方法? `

4 个答案:

答案 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方法   代码不起作用(它将覆盖这些属性)。

你不需要为高度做任何其他事情。系统将处理它。