NSTableView、高亮模式 "None" 和模糊背景
NSTablewView, Highlight Mode "None" and Blurred Background
我注意到,当我的基于视图的 NSTableView
在 Interface Builder 中将 highlight
属性设置为 "Source List" 时,它会呈现它的背景具有 振动效果 (即,它模糊了其父项 window 后面的内容)。
如果我改为将所述属性设置为 "None" 或 "Regular"(其他两个选项) ,background color
属性自动设置为白色,并且在运行时呈现 opaque(即使指定了 alpha 小于 1.0 的自定义颜色)。
我需要我的 table 单元格是非高光的table,但我真的很想要模糊效果。
此外,我不能通过 NSTableViewDelegate 方法禁止单元格突出显示:
func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool
...因为这会使我的单元格内的文本字段取消选择table,从而导致 uneditable.
我找到了 this question,它基本上要求 相反 解决方案(即,在设置高亮 "Source List" 时禁用振动),所以按照答案我在托管我的 table 视图的视图控制器上尝试了这段代码:
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
let appearance = NSAppearance(named: NSAppearanceNameVibrantLight)
tableView.appearance = appearance
}
(外观被实例化并分两行分配以确认它在调试器上是非零的)
...但它并没有改变任何东西。
有什么简单的解决方法吗?
在 Interface Builder 中,我必须做三件事:
- 为包含 table 视图的 滚动视图 提供透明背景色。
- 取消选中滚动视图的 "Draw Background"。
- 给 table 视图一个透明的背景色。
…然后我能够看到我将 table 放在里面的 NSVisualEffectView
。
我注意到,当我的基于视图的 NSTableView
在 Interface Builder 中将 highlight
属性设置为 "Source List" 时,它会呈现它的背景具有 振动效果 (即,它模糊了其父项 window 后面的内容)。
如果我改为将所述属性设置为 "None" 或 "Regular"(其他两个选项) ,background color
属性自动设置为白色,并且在运行时呈现 opaque(即使指定了 alpha 小于 1.0 的自定义颜色)。
我需要我的 table 单元格是非高光的table,但我真的很想要模糊效果。
此外,我不能通过 NSTableViewDelegate 方法禁止单元格突出显示:
func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool
...因为这会使我的单元格内的文本字段取消选择table,从而导致 uneditable.
我找到了 this question,它基本上要求 相反 解决方案(即,在设置高亮 "Source List" 时禁用振动),所以按照答案我在托管我的 table 视图的视图控制器上尝试了这段代码:
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
let appearance = NSAppearance(named: NSAppearanceNameVibrantLight)
tableView.appearance = appearance
}
(外观被实例化并分两行分配以确认它在调试器上是非零的)
...但它并没有改变任何东西。
有什么简单的解决方法吗?
在 Interface Builder 中,我必须做三件事:
- 为包含 table 视图的 滚动视图 提供透明背景色。
- 取消选中滚动视图的 "Draw Background"。
- 给 table 视图一个透明的背景色。
…然后我能够看到我将 table 放在里面的 NSVisualEffectView
。