我在NSTableView的委托中实现了- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row
,以便在最左边列的宽度发生变化时调整表格行的高度。问题是在调整大小期间(以及在调整大小期间滑入视图的任何列)只会重绘该列。
这会在调整大小后产生下面的时髦视觉效果。我想要的是一种在用户调整列大小时告诉表视图完全重绘的方法。现在,我能够做的最多就是在该列完成大小调整后调用setNeedsDisplay
。
答案 0 :(得分:2)
查看NSTableView
method noteHeightOfRowsWithIndexesChanged:
。您需要为高度已更改的行创建NSIndexSet。
<强>更新强>
为了有一个安全的地方来调用它,你可以继承NSTableColumn以覆盖setWidth:
方法。然后,您可以发布表委托可以观察到的自定义通知,或者您也可以覆盖表视图并让列告诉表直接告诉其委托。
答案 1 :(得分:1)
这可能不是唯一的方法,但给表视图核心动画层修复了它。它不是100%平滑,但普通用户可能永远不会注意到。