NSCell 突出显示的 属性 的 NSView 版本是什么?
What's the NSView version of NSCell's highlighted property?
我正在将基于单元格的 NSTableView 迁移为基于视图。使用 NSCell,为了确定单元格是否突出显示(例如,以白色而不是黑色绘制文本),我查看了 NSCell highlighted
属性.
这个的 NSView 版本是多少?我在文档中找不到类似的内容。
最简单的方法是简单地子class NSTableCellView。所有文档都说您可以子 class NSTableCellView 或 NSView,例如 Table View Programming Guide for Mac:
Drag an NSTableCellView object (or a custom view) from the object library to the appropriate column in the table view. ... Typically, the view class is a subclass of NSTableCellView.
它没有说明这是什么,也没有说明您为什么要使用它。它看起来像一个 NSView,它有一个 NSTextField 和一个 NSImageView,仅此而已——所以如果你没有创建一个包含这些的视图,很容易忽略这个 class 而只是 subclass NSView .
不过,有趣的是,如果您在 NSTableCellView 中有任何 NSTextFields(即使您不为此使用 textField
属性!),它们会自动使用正确的 light/dark 着色。
特别是,NSTableCellView 的 backgroundStyle
属性 似乎是导致文本值实际更改的原因。文档说:
The default implementation automatically forwards calls to all subviews that implement setBackgroundStyle: or are an NSControl, which have NSCell classes that respond to setBackgroundStyle:.
NSTextField 是一个带有 NSCell 的 NSControl,当然,所以它会调用它。
虽然在 Apple 的文档中并不完全清楚("this"指的是什么?),但似乎 NSTableView 在任何视图上调用 -setBackgroundStyle:
定义它。所以如果你不想子class NSTableCellView,你也可以只添加一个属性到你自己的NSView:
var backgroundStyle: NSBackgroundStyle
并让您的绘图代码使用它。
我正在将基于单元格的 NSTableView 迁移为基于视图。使用 NSCell,为了确定单元格是否突出显示(例如,以白色而不是黑色绘制文本),我查看了 NSCell highlighted
属性.
这个的 NSView 版本是多少?我在文档中找不到类似的内容。
最简单的方法是简单地子class NSTableCellView。所有文档都说您可以子 class NSTableCellView 或 NSView,例如 Table View Programming Guide for Mac:
Drag an NSTableCellView object (or a custom view) from the object library to the appropriate column in the table view. ... Typically, the view class is a subclass of NSTableCellView.
它没有说明这是什么,也没有说明您为什么要使用它。它看起来像一个 NSView,它有一个 NSTextField 和一个 NSImageView,仅此而已——所以如果你没有创建一个包含这些的视图,很容易忽略这个 class 而只是 subclass NSView .
不过,有趣的是,如果您在 NSTableCellView 中有任何 NSTextFields(即使您不为此使用 textField
属性!),它们会自动使用正确的 light/dark 着色。
特别是,NSTableCellView 的 backgroundStyle
属性 似乎是导致文本值实际更改的原因。文档说:
The default implementation automatically forwards calls to all subviews that implement setBackgroundStyle: or are an NSControl, which have NSCell classes that respond to setBackgroundStyle:.
NSTextField 是一个带有 NSCell 的 NSControl,当然,所以它会调用它。
虽然在 Apple 的文档中并不完全清楚("this"指的是什么?),但似乎 NSTableView 在任何视图上调用 -setBackgroundStyle:
定义它。所以如果你不想子class NSTableCellView,你也可以只添加一个属性到你自己的NSView:
var backgroundStyle: NSBackgroundStyle
并让您的绘图代码使用它。