xcode – 如何反转所选NSTableView行的文本颜色

前端之家收集整理的这篇文章主要介绍了xcode – 如何反转所选NSTableView行的文本颜色前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个NSTableView,我在其中更改特定列中文本的颜色,但是当选择一行时,文本不会更改为更合适的颜色,以便它可读.

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 :)以根据背景样式使用不同的文本颜色进行绘制.

猜你在找的iOS相关文章