2014-03-13 213 views
2

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

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

对于表格单元格视图我试着用NSTableCellView是NSView和简单的NSTextField(这是你的图片上看到的一个),但结果总是相同的。

​​

回答

2

我可以通过打开标题单元格视图及其表格视图上的Core Animation图层来修复它。

0

如果你不这样做比填充行的背景颜色等什么,你应该设置的NSTableRowViewbackgroundColor属性,而不是覆盖-drawBackgroundInRect:

如果你确实需要这个覆盖来进一步定制,我注意到你忘记了在你的实现中调用[super drawBackgroundInRect:dirtyRect],这可能会对你所看到的行为负责。

+1

您的意思是.backgroundColor?如果是这样,那么我试图设置它,但它总是通过表视图重置。如果我在drawBackgroundInRect中调用super,那么它首先绘制默认的灰色背景,然后在灰色背景上绘制我的半透明覆盖图。 – Indoor

+0

是的,抱歉,这就是我的意思。 – indragie