UITableViewCell,设置动态高度w /多个标签

时间:2015-06-22 05:40:11

标签: ios swift uitableview

我有一个带有两个标签的自定义UITableViewCell。一个标签包含单词的简短定义,另一个标签包含仅在选择单元格时显示的较长定义。短定义的长度区分单词和单元格,因此为单元格设置显式高度有时会切断部分定义。问题是,如果我使用UITableViewAutomaticDimension,单元格将其高度设置为适合较长定义标签的高度,即使此时隐藏了较长的定义标签。这在单元格中留下了很多空白区域。轻敲细胞时,出现较长的定义标签,较短的标签消失,细胞正确扩展。如何为可以使用较短和较长标签的单元格设置动态高度,以便在不需要时可以删除这些额外的空格?

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if currentRow == indexPath.row {
        return UITableViewAutomaticDimension
    } else {
        return 150.0
    }
}

编辑:我使用的自定义单元格

在didSelectRowAtIndexPath中触摸单元格之前,隐藏了definitionLabel。我需要单元格在不同时间符合definitionLabel和quickDefinitionLabel的高度。

class ListTableViewCell: UITableViewCell {

    @IBOutlet weak var wordLabel: UILabel!
    @IBOutlet weak var definitionLabel: UILabel!
    @IBOutlet weak var quickDefinitionLabel: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        self.autoresizingMask = UIViewAutoresizing.FlexibleHeight
        self.clipsToBounds = true
        definitionLabel.hidden = true
    }

    override func prepareForReuse() {
        self.wordLabel.textAlignment = NSTextAlignment.Left
        definitionLabel.hidden = true
        quickDefinitionLabel.hidden = false
    }
}

2 个答案:

答案 0 :(得分:0)

在iOS 8和自动布局下,您只需要在ViewDidLoad中使用两行代码:

tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension

第一个数字应该是您的最小尺寸。

您根本不需要heightForRowAtIndexPath方法。

答案 1 :(得分:0)

我找到了一个工作,我不会设置长定义文本,直到选中单元格...它清除了空格问题,似乎适用于我想要它的工作。