1

我注意到,当我的基于视图NSTableViewhighlight属性在 Interface Builder 中设置为“源列表”时,它会使用活力效果渲染其背景(即,它会模糊其父窗口后面的内容)。

相反,如果我将所述属性设置为“无”“常规”(其他两个选项),则该background color属性会自动设置为白色,并且在运行时呈现不透明(即使 alpha 小于 1.0 的自定义颜色是指定的)。

我需要我的表格单元格不可突出显示,但我真的很喜欢模糊效果。

此外,我不能通过 NSTableViewDelegate 方法禁止单元格突出显示:

func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool

...因为这使我的单元格内的文本字段无法选择,因此无法编辑。

我发现了这个问题,它基本上要求相反的解决方案(即,当突出显示设置为“源列表”时禁用活力),所以按照那里的答案,我在托管我的表视图的视图控制器上尝试了这段代码:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do view setup here.

    let appearance = NSAppearance(named: NSAppearanceNameVibrantLight)
    tableView.appearance = appearance
}

(外观在两个单独的行中被实例化并分配以确认它在调试器上是非零的)

...但它不会改变任何东西。

有什么简单的解决方法吗?

4

1 回答 1

1

在 Interface Builder 中,我必须做三件事:

  1. 给包含表格视图的滚动视图一个透明的背景颜色。
  2. 取消选中滚动视图的“绘制背景”。
  3. 给表格视图一个透明的背景颜色。

…然后我能够看到NSVisualEffectView我把桌子放在里面的东西。

于 2017-10-02T13:47:57.107 回答