我有一个表格视图,其中有height和2个单元格的automaticDimension。 一个单元格具有一个“读取更多”按钮,该按钮可更新标签的布局约束常数(如IBOutlet)。它可以正常工作,并且单元格高度根据标签高度而更新,但是当我第一次尝试在cellForRowAt方法委托上更新布局约束时,它可以工作,但是此后,它会从“读取更多”按钮停止工作(并且布局约束出口不起作用)不会变成零)。
if cellType == .movie {
let movieCell = cell as! MovieDescriptionCell
movieCell.updateCellWith(movie: selectedMovie!)
movieCell.infoLabelHeight.constant = 200. ***(here is the problem, if I don't have this the read more button works)***
movieCell.readMorePressedBlock = { [weak self] (tag) in
guard let strongSelf = self else { return }
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(70), execute: {
strongSelf.tableView.reloadData()
})
}
}
@IBOutlet var infoLabelHeight: NSLayoutConstraint!
@IBAction func onReadMoreButton(button: UIButton) {
self.readMoreState = !self.readMoreState
setReadMoreImageFor(state: readMoreState)
let infoText = self.infoLabel.text
let expectedHeight = infoText?.height(withConstrainedWidth: infoLabelWidth.constant, font: self.infoTextFont) ?? self.infoDefaultHeight
self.infoLabelHeight.constant = self.readMoreState ? expectedHeight : self.infoDefaultHeight
readMorePressedBlock?(button.tag)
}
我该如何进行这项工作?如果我删除“ movieCell.infoLabelHeight.constant = 200”行,则“阅读更多”按钮将起作用,但是我也需要在开始时设置常量。
谢谢。
答案 0 :(得分:0)
我找到了一个解决方案,如果我在awakeFromNib方法中设置布局约束,则read more按钮可以正常工作(可以再次更改约束)
override func awakeFromNib() {
super.awakeFromNib()
self.infoLabelHeight.constant = 200
}