【发布时间】:2021-10-22 11:45:01
【问题描述】:
我浏览了整个论坛并尝试了所有解决方案,但到目前为止没有任何效果。我注意到我的 UIImageView 覆盖了多个单元格,这意味着单元格没有自动调整其高度。这是我在它抱怨的控制台中发现的约束。
"<0x600001970f50 uitableviewcellcontentview:0x7f86a4813dd0.height="=">0x600001970f50>
标签: ios uitableview
我浏览了整个论坛并尝试了所有解决方案,但到目前为止没有任何效果。我注意到我的 UIImageView 覆盖了多个单元格,这意味着单元格没有自动调整其高度。这是我在它抱怨的控制台中发现的约束。
"<0x600001970f50 uitableviewcellcontentview:0x7f86a4813dd0.height="=">0x600001970f50>
标签: ios uitableview
首先,单元格的contentView 是一个“特殊”视图,其属性对于表格视图的操作是不可或缺的。
所以,不要这样做:
self.contentView.autoresizingMask = .flexibleHeight
其次,layoutSubviews() 在单元格/视图的生命周期中可以(并且通常是)多次调用。您的约束设置应该在init 中完成:
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier:reuseIdentifier)
stackViewLeft.addArrangedSubview(leftImageView)
stackViewLeft.addArrangedSubview(leftLabel)
stackViewRight.addArrangedSubview(rightImageView)
stackViewRight.addArrangedSubview(rightLabel)
stackViewMain.addArrangedSubview(stackViewLeft)
stackViewMain.addArrangedSubview(middleLabel)
stackViewMain.addArrangedSubview(stackViewRight)
contentView.addSubview(stackViewMain)
NSLayoutConstraint.activate([
// constrain main stack view to all 4 sides of contentView
stackViewMain.topAnchor.constraint(equalTo: contentView.topAnchor,constant: 0),
stackViewMain.leadingAnchor.constraint(equalTo: contentView.leadingAnchor,constant: 0),
stackViewMain.trailingAnchor.constraint(equalTo: contentView.trailingAnchor,constant: 0),
stackViewMain.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0),
// constrain left image view Width: 100-pts,
// Height equal to Width (1:1 ratio)
leftImageView.widthAnchor.constraint(equalToConstant: 100.0),
leftImageView.heightAnchor.constraint(equalTo: leftImageView.widthAnchor),
// constrain right image view Width: 100-pts,
// Height equal to Width (1:1 ratio)
rightImageView.widthAnchor.constraint(equalToConstant: 100.0),
rightImageView.heightAnchor.constraint(equalTo: rightImageView.widthAnchor),
])
}
所以...用上面的代码替换您的 init 并完全删除您的 awakeFromNib() 和 layoutSubviews() 函数。
你应该得到这个:
【讨论】: