我已经覆盖了NSTableRowView,到目前为止它正在努力。我面临的问题是为空行绘制分隔符。
drawSeparatorInRect:dirtyRect
似乎只覆盖了包含内容的行,其余部分似乎都填充了系统颜色。
目前我有:
-(void)drawSeparatorInRect:(NSRect)dirtyRect
{
NSRect sepRect = self.bounds;
sepRect.origin.y = NSMaxY(sepRect) - 1;
sepRect.size.height = 1;
sepRect = NSIntersectionRect(sepRect, dirtyRect);
if (!NSIsEmptyRect(sepRect))
{
[[NSColor gridColor] set];
NSRectFill(sepRect);
}
}
正如我所说的那样效果很好。我最初是从一些苹果样本中选择的。
当我将分隔符颜色更改为“红色”时,您可以看到会发生什么:
最后一个填充行的下半部分被填充,但之后的其他行都没有填充。
有没有人知道我错过了什么?
干杯,
A
答案 0 :(得分:2)
对于包含内容的行,只有行视图。因此,自定义行视图不会影响超出表格内容末尾的行的分隔符的绘制。
要自定义这些分隔符的绘图,您需要覆盖-[NSTableView drawGridInClipRect:]
。您可以计算分隔符的位置,以查看超出内容结尾的行的位置,并以与自定义行视图相同的方式绘制。
WWDC 2011 Session 120 – View Based NSTableView Basic to Advanced的视频中使用示例代码对此进行了解释。它也在Apple的HoverTableDemo sample project中得到了证明。