UITabel UITableViewCell内部 - 高度未正确调整

时间:2016-03-08 22:19:27

标签: ios uitableview uilabel height

查看粉红色UILabel内的第二个UITableViewCell.如您所见,其中的文字被截断。我一直试图让这个UILabel的高度正确地扩展或缩小,作为插入文本的数量的函数 - 并且它不起作用。

enter image description here


•我正在使用AutoLayouts
UILabel的{​​{1}}固定在ContentView的所有4个边上 - 当然位于UITableViewCell内 •顺便说一下,单元格都是Static个单元格,而不是Prototype个单元格 •这是我正在使用的代码:

(在viewWillAppear中)

descriptionLabel.text = " < a bunch of text goes here > "
descriptionLabelSize = descriptionLabel.sizeThatFits(descriptionLabel.bounds.size)
// here's a global var I use to store the height:
descriptionLabelHeight = descriptionLabelSize.height

然后,在viewDidAppear(和FYI,我也尝试将以下内容放在willdidLayoutSubviews以及各种其他排列中:)

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    var newFrame = descriptionLabel.frame
    newFrame.size.height = descriptionLabelHeight
    descriptionLabel.frame = newFrame

    descriptionLabel.setNeedsLayout()
    view.layoutIfNeeded()
}

最后,在heightForRowAtIndexPath中,我使用全局变量来调整TableViewCell的高度:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    switch indexPath.row {
    case 0: return 50
    case 1: return descriptionLabelHeight+20   // the + 20 is for padding & margin
    default: return 50
    }
}

结果是混合的:标签的高度 - 以及容纳它的单元 - 调整 - 但还不够。它总是太短暂。我并不是说它只是切断了几个单词,它的 方式 太短,切断了多个句子。
但同样:高度 进行调整。这就是奇怪的部分。它的工作 - 还不够。

任何提示将不胜感激!

1 个答案:

答案 0 :(得分:0)

您需要告诉表视图根据内容动态缩放单元格:

tableView.rowHeight = UITableViewAutomaticDimension

然后,您可以删除heightForRowAtIndexPath:的实现 - 单元格应自动缩放。请记住正确设置布局约束。没有它,动态尺寸不会起作用。