如何为NSTableCellView设置背景颜色?

时间:2014-03-25 23:36:56

标签: objective-c cocoa nstableview nstablecellview

我在我的笔尖中创建了一个NSTableCellView,其中textField占据了整个空间,它非常适合显示文本和跟踪列的大小。

现在我希望能够在特定情况下为它设置纯色背景颜色(即,不是所有单元格)。我该怎么做?

我认为这就像this question,除了解决方案没有对我做任何事情,我也无法想出任何有效的方法。

我尝试过制作-tableView:viewForTableColumn:row:方法......

  • 设置cellview.layer.backgroundColor
  • 设置cellview.wantsLayer = YES(并确认有一个图层)
  • 设置cellview.layer.opaque = YES和cellview.layer.opacity = 1.0
  • 设置cellview.textField.backgroundColor
  • 设置cellview.textField.drawsBackground = YES
  • 在nib中,对于Table Cell View的文本字段,选中“Draws Background”,然后设置Background弹出窗口(对于所有表格单元格都是永久性的,不仅仅是我想要的--tableView:viewForTableColumn:row :,但是如果这有效,它会告诉我至少某些在这里能够绘制背景)

由于我的文本占据了整个单元格视图,因此能够在textField或整个单元格视图上设置它都没问题。

这似乎应该是一个简单的设置,但没有任何作用。我是否需要将NSTableCellView子类化为具有背景颜色?

1 个答案:

答案 0 :(得分:3)

我建议创建一个NSTableCellView的子类。它有助于创建可重复使用的组件(您甚至可以添加渐变以使其看起来不同)并分离责任。 您可以使用这个简单的代码并在NSTableCellView中更改类。

- (void)drawRect:(NSRect)dirtyRect
{        
    NSRect bounds = [self bounds];

    [[NSColor redColor] set];

        NSRectFill(bounds);

}