基于视图的NSTableView是否可以在行边界之外绘制?

时间:2013-03-29 16:53:47

标签: macos cocoa nstableview nstablecellview

我有一个NSTableView,有2列。每列包含一个不同的NSTableCellView子类,在某些情况下我想实现重叠效果,因此例如第1列第1行中的视图顶部可以位于上一列0行的底部上方0视图。

我理解在tableView:viewForTableColumn:row中设置NSTableCellView子类实例的帧是没有意义的,因为它总是被覆盖,但感觉就像剪辑可能发生在行级和单元级别

是否可以在单元格/行边界之外绘制?

1 个答案:

答案 0 :(得分:0)

如果你弄乱图形上下文,任何视图都可以在其边界之外绘制;完全错误的做法就像在应用程序范围内“乱涂”整个内存一样错误。

更安全(更尊重系统的绘图状态)方法是通过自己绘制每个NSTableRowView的背景来捏造它,但在其自己的边界内垂直“偏移”,以便行 n 绘制对于除第一行之外的所有行,行 n -1的底部。也就是说,除了第一行之外的所有行,行视图的“上边缘”绘制的内容看起来像前一行视图的下边缘;底边是图中的“切断”。这样,您可以牺牲相对较小的便利性来翻转开关以获得视图阴影,从而更精细地控制行的绘制方式。