【问题标题】:Set Background colour on NSTableCellView在 NSTableCellView 上设置背景颜色
【发布时间】:2013-07-21 14:50:35
【问题描述】:

我正在尝试在 NSTableCellView 上设置背景颜色,但似乎没有办法做到这一点。

因此,必须有另一种我不知道的方法来实现这一点,所以,如果有人能启发我,我将不胜感激!

谢谢!

【问题讨论】:

  • 实际上,作为骗子提出的问题是关于设置NSTableViewCellNSCell 的子类)的颜色,而问题是关于NSTableCellView(@ 的子类)的颜色987654325@)。两种不同的东西!当提出旧问题时,Cocoa 中不存在基于视图的表。

标签: objective-c macos cocoa


【解决方案1】:

NSTableCellViewNSViewNSViewCALayerCALayer em>backgroundColor。所以...

myTableCellView.wantsLayer = YES;  // make the cell layer-backed
myTableCellView.layer.backgroundColor = [[NSColor redColor] CGColor]; // or whatever color you like

【讨论】:

  • @Caleb 是否需要在界面构建器中的 tableview 上启用任何东西才能使其正常工作?它不适合我。 XCode6
  • @Jai 图层的背景色需要是CGColor,所以上面应该是...[[NSColor redColor] CGColor];。我知道在 iOS 上就是这种情况,从文档来看,它在 MacOS X 上的情况也一样。
  • @Jai 我必须用myTableCellView.wantsLayer = true启用层
  • A NSView 没有默认有CALayer。如果你明确告诉它有一个CALayer(如果你使它成为层支持或层托管),它只会有一个CALayer。此外,您的代码示例是错误的,因为您将 NSColor 分配给 CGColor 类型的属性(在构建时产生编译器警告并且在运行时无法工作 - 如果您在 Swift 中尝试,甚至不会编译)。
  • @Mecki 感谢您的 cmets。编辑以修复颜色问题。 yuzer 上面的评论指出您还需要添加一个图层 - 我也会包含该编辑。
【解决方案2】:

您需要将您的 NSColor 对象转换为 CGColor 结构:

self.layer.backgroundColor = [[NSColor redColor] CGColor];

【讨论】:

    【解决方案3】:

    对于 Swift 3,根据 Caleb 的回答,这对我有用:

    cell.wantsLayer = true
    cell.layer?.backgroundColor = NSColor.red.cgColor 
    

    我花了很长时间才找到这个问题和答案,我非常感激。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2011-05-27
      • 1970-01-01
      • 2010-09-17
      • 2018-07-15
      相关资源
      最近更新 更多