如何绘制半透明的NSTableRowView?

时间:2014-03-13 22:54:09

标签: objective-c macos cocoa nstableview nsoutlineview

我想自定义浮动组行背景的绘制而不能这样做。基本上我想要一个部分透明的背景(滚动或不滚动时总是保持相同的外观),但是当表视图不滚动时(虽然当滚动它看起来像预期时),某些东西会改变我的NSTableRowView子类的外观。 这是解释问题的代码和图像。

- (void)drawBackgroundInRect:(NSRect)dirtyRect
{
    [[NSColor colorWithCalibratedWhite:1.0 alpha:0.5] set];
    [[NSBezierPath bezierPathWithRect:dirtyRect] fill];
}

对于表格单元格视图,我尝试使用NSTableCellView,NSView和简单的NSTextField(这是您在图像上看到的那个),但结果始终相同。

enter image description here

2 个答案:

答案 0 :(得分:2)

我能够通过在标题单元格视图及其表格视图上启用Core Animation图层来修复它。

答案 1 :(得分:0)

如果除了用颜色填充行的背景之外没有做任何其他操作,则应设置backgroundColor NSTableRowView属性,而不是覆盖-drawBackgroundInRect:

如果您确实需要此覆盖以进行进一步的自定义,我注意到您忘记在实施中调用[super drawBackgroundInRect:dirtyRect],这可能是您所看到的行为的原因。