我使用的是TableView,并有一个自定义的TableViewCell,我已将子视图添加到该单元格中。
问题是我有时需要更改子视图的高度,因此,必须更新表的ContentView以及行的高度。
自定义TableViewCell的子视图由黄色背景表示。
这些图片显示了我的模拟器中当前正在发生的事情。
有载
在导致子视图高度增加的事件之后
用这种方法最好的方法是什么?
我应该使用约束条件吗?如果是这样,我应该使用哪种约束?每次子视图的大小改变时,我是否也必须重新加载TableView?
以下是我当前用于自定义TableViewCell的代码:

import UIKit

class CustomCell: UITableViewCell {

    var newView: UIView!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)

        self.newView = UIView(frame: self.frame)
        self.newView.backgroundColor = .yellowColor()
        self.addSubview(newView)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        self.newView.frame.size.width = self.frame.size.width // because self.frame.width is different than it was in the init method
   }

    func somethingHappenedThatMySubviewHasToIncreaseInHeight() {
        self.newView.frame.size.height = self.frame.size.height + 40
    }
}

最佳答案

最好的方法是使用自动布局和自动调整大小的单元格。在故事板中为自定义单元格设置约束。
您将不需要重新加载TableView。每个单元格将根据其子视图占用的垂直空间大小自动调整其高度。
有关详细信息,请参阅hissmileyborg中的详细演练,了解动态单元格布局和可变行高在uiTableView中使用自动布局。

10-07 12:44
查看更多