Finder的Date Modified,Size和Kind列具有灰色文本,当您选择文件/文件夹行时,灰色文本将变为白色(以便在蓝色突出显示中可读).
我无法在XCode上找到一个魔术复选框来默认启用此行为,所以是否有人知道如何实现相同的效果?
我在XCode 6.3中使用Swift.
谢谢.
解决方法
选择行时,该行会自动计算其interiorBackgroundStyle.如果它响应-setBackgroundStyle,它还设置单元格视图的backgroundStyle:或者是一个NSControl,其中一个单元格响应该单元格.
如果您的单元格视图是NSTableCellView的实例,它会将背景样式转发到符合相同条件的所有子视图.如果您使用不同的容器视图作为单元格视图,并且希望像这样转发背景样式,则必须在视图类中自己实现.
NSTextField的单元格(NSTextFieldCell)响应-setBackgroundStyle:因此上述机制自动设置其背景样式.如果textColor是其中一种标准控件颜色(例如NSColor.controlTextColor()),则文本字段单元格将自动将其文本颜色更改为白色,但如果指定非标准颜色,则不会这样做.因此,如果您要为文本设置特定颜色,则您有责任在背景样式更改时更改该颜色.
您可以使用NSTableCellView的子类,并为backgroundStyle属性添加属性observer(didSet).这可以根据设置的样式更改文本字段的textColor.例如,如果背景样式不是.Dark,则可以使用自定义颜色,如果是.Dark,则使用普通文本字段颜色NSColor.controlTextColor()(这样文本字段实际上将显示为白色).
您还可以使用NSTextFieldCell的子类作为文本字段,并执行相同的操作.或者覆盖drawInteriorWithFrame(_:inView :)以根据背景样式使用不同的文本颜色进行绘制.