我正在尝试根据可以是一行或多行的UILabel的大小来调整tableviewcell的大小。我需要为应用程序的其余部分打开自动布局,所以我不想将其关闭以使其正常工作。目标是iOS 7和iOS 8。
我尝试了几种解决方案,但由于某种原因,我似乎无法获得正确的标签高度来自动调整或调整单元格高度。
此方法出现问题:calculateHeightForConfiguredSizingCell。我已经在Git上放了一个示例项目,所以你可以看到我所看到的。
https://github.com/mdaymond/cellResizer
此示例基于以下文章:http://www.raywenderlich.com/73602/dynamic-table-view-cell-height-auto-layout
更新 我检查了代码的更新。它几乎按照我想要的方式工作并以编程方式计算,但由于某种原因,标签高度的大小不正确 - 它没有达到所需的全高度。原始代码的问题是标签需要明确的宽度。
答案 0 :(得分:1)
在这里,如果您支持IOS 7,那么您需要在您的班级中实施UITableViewDelegate
协议,然后覆盖:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
}
有关基于标签文本长度的动态自定义UITableViewCell高度的更多信息(请查看此内容),您可以将代码放在heightForRowAtIndexPath
函数中:
height based on label text length
同样覆盖:
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
// example to return the estimated height
return 280
}
注意:通过支持IOS 7,您应该手动处理它。没有像IOS 8那样简单的方法。
但如果您只支持IOS 8及更高版本,那么您可以在以下两行中完成:
self.tableView.estimatedRowHeight = 280
self.tableView.rowHeight = UITableViewAutomaticDimension
答案 1 :(得分:0)
实际上我已下载您的源代码并进行以下更改。并且multiline
现在支持heightForRowAtIndexPath
。
第1步:删除以编程方式计算行高。这意味着您的演示中注释了UILabel
。
第2步:在UITableViewCell
的{{1}}上设置以下布局限制。
第3步:在xib中将行数设置为 0 。
输出:
答案 2 :(得分:0)
这是我的代码。
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
self.scoutPropertyTable.rowHeight = UITableViewAutomaticDimension + 35
return self.scoutPropertyTable.rowHeight
}