Dan*_*ell 11 macos cocoa nsoutlineview osx-yosemite nsvisualeffectview
在OS X 10.10源列表中似乎使用了光亮的外观.在Finder(以及其他一些第三方应用程序,例如Things.app)中,源列表中的所选项目由暗色振动外观指示.例如,请参见下图中的"桌面"行.
我该如何复制这种行为?我是否需要使用委托方法来指定表行视图,
-outlineView:rowViewForItem:
Run Code Online (Sandbox Code Playgroud)
并尝试自己定制绘图或是否有更直接的方法?如果您在Xcode标准源列表界面默认的高亮是保持我们在以前版本的OS X已经看到了标准的蓝色矩形

Osk*_*kar 12
玩了一会儿后,我找到了实现这个目标的方法.事实证明,当使用NSTableViewSelectionHighlightStyleSourceList并点击我的NSOutlineView外部时,我会得到"Finder高亮"样式.因此,如果你拒绝让它成为第一响应者,我认为它会保持这种状态.
只需将您的NSOutlineView作为子类并覆盖此方法:
-(BOOL)acceptsFirstResponder{
return NO;
}
Run Code Online (Sandbox Code Playgroud)
它有效,但有一些缺点.例如,使用NSOutlineView中的箭头键将不再起作用.我下载了Things应用程序,它也不允许使用箭头键,所以很可能这就是他们这样做的方式.如果有人找到更好的方法,请发布.
这是Swift的等价物:
func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: Any) -> NSTableRowView? {
return CustomTableRowView(frame: NSZeroRect);
}
Run Code Online (Sandbox Code Playgroud)
和NSTableRowView的子类
import Cocoa
class CustomTableRowView: NSTableRowView {
override var isEmphasized: Bool {
set {}
get {
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您希望保持箭头键的工作,可以继承NSTableRowView并覆盖以下方法:
- (BOOL)isEmphasized
{
return NO;
}
Run Code Online (Sandbox Code Playgroud)
我不确定,这就是“黑暗活力”。
我宁愿尝试将背景颜色设置为“备用选定控件文本颜色”
看一下 InterfaceBuilder 中的 NSTextField。有许多“控制文本”颜色,它们在视觉效果视图上具有特殊的外观。
对于设置选择颜色,请参阅此答案(未经测试): NSTableview Change thehighlight color
| 归档时间: |
|
| 查看次数: |
2474 次 |
| 最近记录: |