Swift:在TableView Prototype Cell中获取标签以显示多行(自动换行)

时间:2015-07-18 23:42:48

标签: ios swift uitableview uilabel uistoryboard

我试图设置一个tableview,每个单元格左边都有一个Image,一个覆盖图像的Label,最后是一个带有长文本的图片右边的标签,我希望如果需要,它会换行到下一行。我的tableview行高设置为65。

我已将行数设置为0并将换行符设置为工作换行。

Storyboard settings

我甚至尝试在我的CustomTableViewCell类中以编程方式设置参数:

    self.materialLabel?.numberOfLines = 0
    self.materialLabel.sizeToFit()
    self.materialLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping

我已经在我的标签上尝试了许多设置约束的组合,但它要么不起作用,要么影响单元格中的所有对象,图像和图像标签不同步。无法设置对齐约束。

使用Xcode 6.3.2,Swift 1.2和iOS 8

感谢高级!

3 个答案:

答案 0 :(得分:1)

您可以使用动态细胞高度(或自我调整细胞)。

基本上,您创建了topleadingbottomtrailing标签相对于单元格contentView的约束。< / p>

然后设置

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = someValue

http://www.raywenderlich.com/87975/dynamic-table-view-cell-height-ios-8-swift

答案 1 :(得分:1)

有很多方法可以为表格单元设置动态高度。

如果您不使用autolayout,则需要以编程方式计算表大小并使用表视图委托方法返回。

如果您使用自动布局,您的生活将非常轻松。向单元格添加约束,即向图像添加边框,宽度和高度约束。仅向图像添加4个边框约束(不添加高度约束)。这可能不是确切的约束,但这会给你一个想法。在viewDidload中添加以下代码

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = someValue

这应该有用。

答案 2 :(得分:0)

原来我的标签宽度太宽了。在设置标签上的约束之前,我必须锚定我的imageview和imagelabel并设置宽度和高度。