1

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

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

我认为这就像这个问题,除了那里的解决方案没有为我做任何事情,我也想不出任何接近它的东西。

我试过用我的-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
  • 在笔尖中,对于表格单元格视图的文本字段,选中“绘制背景”,并设置背景弹出窗口(这对于所有表格单元格都是永久性的,而不仅仅是我想要在 -tableView:viewForTableColumn:row: 中的那些,但是如果这行得通,它将向我证明,这里至少有一些东西能够绘制背景)

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

这似乎应该是某个地方的简单设置,但没有任何效果。我是否需要继承 NSTableCellView 才能获得背景颜色?

4

1 回答 1

3

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

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

    [[NSColor redColor] set];

        NSRectFill(bounds);

}
于 2014-03-26T00:13:01.910 回答