在OS X 10.10源列表中似乎使用 light 活力外观。在Finder(以及其他一些第三方应用程序,例如Things.app)中,源列表中的所选项目由 dark 活力外观表示。例如,请参阅下图中的桌面行。
我该如何复制这种行为?我是否需要使用委托方法来指定表行视图
-outlineView:rowViewForItem:
并尝试自己定制绘图,还是有更直接的方法?如果您在Xcode中创建标准源列表UI,则默认突出显示仍然是我们在以前版本的OS X中看到的标准蓝色矩形。
答案 0 :(得分:12)
玩了一会儿后,我找到了实现这个目标的方法。 事实证明,我会得到" Finder的亮点"使用NSTableViewSelectionHighlightStyleSourceList并在我的NSOutlineView外部单击时的样式。因此,如果你拒绝让它成为第一响应者,我认为它会保持这种状态。
只需将您的NSOutlineView作为子类并覆盖此方法:
-(BOOL)acceptsFirstResponder{
return NO;
}
它有效,但有一些缺点。例如,使用NSOutlineView中的箭头键将不再起作用。我下载了Things应用程序,它也不允许使用箭头键,所以很可能这就是他们这样做的方式。如果有人找到更好的方法,请发布。
答案 1 :(得分:8)
这是Swift等价物:
func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: Any) -> NSTableRowView? {
return CustomTableRowView(frame: NSZeroRect);
}
NSTableRowView的子类
import Cocoa
class CustomTableRowView: NSTableRowView {
override var isEmphasized: Bool {
set {}
get {
return false;
}
}
}
答案 2 :(得分:7)
如果您希望保持箭头键的工作,可以继承NSTableRowView并覆盖以下方法:
- (BOOL)isEmphasized
{
return NO;
}
答案 3 :(得分:1)
我不确定,这是“Dark Vibrancy”。
我宁愿尝试将背景颜色设置为“Alternate Selected Control Text Color”
在InterfaceBuilder中查看NSTextField。有许多“控制文本”颜色,在视觉效果视图上有特殊的外观。
并设置选择颜色,请参阅此答案(未经测试): NSTableview Change the highlight colour