在基于视图的情况下NSTableView,您的自定义行和单元格视图(NSTableRowView和的子类NSTableCellView)将获取其backgroundStyle属性集,因此您可以知道背景是浅色还是主要暗(对于选定的突出显示的行).
这甚至会传递给直接的子视图.
现在,表格单元格视图的默认文本标签对此做出了正确的反应,因此在深色背景上,文本以适当的浅色绘制.
但是,NSTextField添加以提供额外文本(在Interface Builder中使用自定义文本颜色集)不会自动遵循此约定.
在API中是否有一种简单的方法可以使文本字段发挥得很好,或者我是否必须将其子类化?
您也可以这样做,而不是覆盖drawRect:
- (void)setBackgroundStyle:(NSBackgroundStyle)backgroundStyle {
NSColor *textColor = (backgroundStyle == NSBackgroundStyleDark) ? [NSColor windowBackgroundColor] : [NSColor controlShadowColor];
self.detailTextField.textColor = textColor;
[super setBackgroundStyle:backgroundStyle];
}
Run Code Online (Sandbox Code Playgroud)
另见:http://gentlebytes.com/blog/2011/08/30/view-based-table-views-in-lion-part-1-of-2/