我有一个在scrollView中垂直展开的视图数组。视图具有相同的宽度,并且从上到下排列。每个View都有一个多行文本域,该文本域从固定的高度开始,并随着行的增加而变高。如何将父视图的高度限制为文本字段的高度?有没有可能做这样的事情(在视图内部约束视图)?
Class DocCell: NSView {
// removed unnecessary components
var textField: NSTextField!
override func updateConstraints() {
NSLayoutConstraint.activate([
heightAnchor.constraint(equalTo: textField.heightAnchor, constant: 10),
// ..other constraints
])
}
}
这样做的目的是,我不必在每次textField添加新行时都更新每个视图的高度,并且包含视图的大小只会随着textField的增加而扩展。
发布于 2020-02-18 17:35:18
的目标是,我不必在每次textField添加新行时都更新每个视图的高度,并且包含视图的大小会随着textField的增加而扩展。
你别无选择。每次添加新行时,都需要更新字段的高度。例如,您可以覆盖NSTextField子类中的textDidChange:
,然后调用invalidateInstrinsicContentSize
(在调用super之后)并在那里重新计算大小:
override func textDidChange(_ note: Notification) {
super.textDidChange(note)
invalidateIntrinsicContentSize()
}
override var intrinsicContentSize: NSSize {
let cell = self.cell as! NSTextFieldCell
var boundingRect = frame
boundingRect.size.height = CGFloat.max
return cell.cellSize(for: boundingRect)
}
这将让您的其他现有约束做正确的事情,只要您将拥抱和压缩阻力设置为1000。
https://stackoverflow.com/questions/60270874
复制相似问题