我有一个带有两个标签的自定义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
}
}
答案 0 :(得分:0)
在iOS 8和自动布局下,您只需要在ViewDidLoad
中使用两行代码:
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension
第一个数字应该是您的最小尺寸。
您根本不需要heightForRowAtIndexPath
方法。
答案 1 :(得分:0)
我找到了一个工作,我不会设置长定义文本,直到选中单元格...它清除了空格问题,似乎适用于我想要它的工作。