由于新的属性usesAutomaticRowHeights
以及自动布局,我们可以使用自动行高的NSTableView。这很有效。
但是当用户调整列的大小时,计算的高度不再正确,并且在tableview单元格中会出现间隙。
在这种情况下,是否有一种经过验证的方法可以在列调整大小后更新行高度?
我已经尝试了updateConstraintsForSubtreeIfNeeded()
,updateConstraints()
,setNeedsDisplay()
,reloadData()
等方法,但没有任何效果。
答案 0 :(得分:1)
如果您在设计中使用NSTextField,请确保每个NSTextField的动态高度Desired Width
设置为Automatic
。此设置位于“大小检查器”中。
更改此项会导致自动重新计算tableview行高。
答案 1 :(得分:0)
对我有用的东西是在NSTableviewDelegate中包含tableViewColumnDidResize
通知方法。在那里,您可以调用表视图的noteHeightOfRows
方法。这是一个实现:
//Recalculate when the screen moves
func tableViewColumnDidResize(_ notification: Notification) {
let allIndex = IndexSet(integersIn:0..<self.YOURTABLE.numberOfRows)
YOURTABLE.noteHeightOfRows(withIndexesChanged: allIndex)
}
以下是文档的链接:tableViewColumnDidResize和noteHeightOfRows