UITableViewCell具有嵌入式垂直堆栈视图设置,具有自动布局和动态高度

时间:2018-04-29 10:43:18

标签: uitableview autolayout interface-builder uistackview

我正在尝试使用嵌入在单元格中的堆栈视图来创建动态单元格,因此当项目添加到单元格时,单元格的高度会适应堆栈视图的高度,但是没有获得预期的结果意味着我得到了雄心勃勃的约束。 以下是设置设置的方法。我有一个嵌入式堆栈视图的单元格:

class MyCell: UITableViewCell {

override var reuseIdentifier: String? {
    return "cell"
}

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
}

    @IBOutlet public weak var stack: UIStackView?

}

这是笔尖的样子:

enter image description here

在表视图代码中我有以下内容:

 func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

public  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return 1
}

public  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! MyCell

    DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2)) {

        for _ in 0...10 {
            let view = MyView()
            cell.stack!.addArrangedSubview(view)
        }
    }
    return cell
}

MyView在哪里:

class MyView: UIView {

override var intrinsicContentSize: CGSize {

    setContentHuggingPriority(.defaultHigh, for: .vertical)


    backgroundColor = .blue
    return CGSize(width: 50, height: 50)
}
}

1 个答案:

答案 0 :(得分:-1)

似乎错误来自于将堆栈视图的底部锚定到内容视图的底部,而是应该将堆栈上最后一个视图的底部锚定到contentView的底部。