1

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

我知道设置 NSTableCellView 子类实例的框架是没有意义的,tableView:viewForTableColumn:row因为它总是会被覆盖,但感觉剪辑可能发生在行级别和单元级别。

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

4

1 回答 1

0

如果您弄乱了图形上下文,任何视图都有可能在其边界之外绘制;这样做是完全错误的事情,就像在不在应用程序权限范围内的内存中“乱涂乱画”一样是错误的。

一种更安全(更尊重系统的绘图状态)的方法是通过自己绘制每个 NSTableRowView 的背景来伪造它,但在其自己的边界内垂直“偏移”,以便第n行为除第一排。也就是说,除了第一行之外,行视图的“顶边”绘制了看起来像前一个行视图的底边的东西;底部边缘在绘图中被“切断”。这样,您牺牲了翻转开关以获得视图阴影的相对较小的便利性,以便更好地控制行的绘制方式。

于 2013-03-29T17:28:01.433 回答