gpt4 book ai didi

xcode - 如何反转选定 NSTableView 行的文本颜色

转载 作者:行者123 更新时间:2023-12-03 16:05:44 26 4
gpt4 key购买 nike

我有一个 NSTableView,其中我正在更改特定列中文本的颜色,但是当选择一行时,文本不会更改为更合适的颜色以使其可读。

Finder 的修改日期、大小和种类列具有灰色文本,当您选择文件/文件夹行时,灰色文本会变为白色(以便在蓝色突出显示中可读)。

我在 XCode 上找不到一个神奇的复选框来默认启用此行为,所以有人知道我如何实现相同的效果吗?

我在 XCode 6.3 中使用 Swift。

谢谢。

最佳答案

您没有说明您的单元格使用什么 View 或 View 层次结构。您也没有说明如何或在何处设置文本字段的颜色或具体设置为什么颜色。

当选择一行时,该行会自动计算其interiorBackgroundStyle。如果单元格 View 响应 -setBackgroundStyle: 或者是带有响应该单元格的 NSControl ,它还会设置单元格 View 的 backgroundStyle

如果您的单元格 View 是 NSTableCellView 的实例,它会将背景样式转发到满足相同条件的所有 subview 。如果您使用不同的容器 View 作为单元格 View ,并且希望背景样式像这样转发,则必须在 View 类中自行实现。

NSTextField 的单元格(NSTextFieldCell)响应 -setBackgroundStyle:,因此通过上述机制自动设置其背景样式。如果文本字段单元格的 textColor 是标准控件颜色之一(例如 NSColor.controlTextColor()),则文本字段单元格会自动将其文本颜色更改为白色,但不会这样做因此,如果您分配非标准颜色。因此,如果您为文本设置特定颜色,则您有责任在背景样式更改时更改该颜色。

您可以使用 NSTableCellView 的子类,并为 backgroundStyle 属性添加属性观察器 (didSet)。这可以根据设置的样式更改文本字段的 textColor。例如,如果背景样式不是 .Dark,您可以使用自定义颜色;如果是 ,则可以使用普通文本字段颜色 NSColor.controlTextColor()。深色(这样文本字段实际上会将其显示为白色)。

您还可以将 NSTextFieldCell 的子类用于文本字段并执行相同的操作。或者重写 drawInteriorWithFrame(_:inView:) 以根据背景样式使用不同的文本颜色进行绘制。

关于xcode - 如何反转选定 NSTableView 行的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29859224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com