NSTablewView,突出显示模式"无"和模糊背景

时间:2017-09-11 11:29:46

标签: macos nstableview nsvisualeffectview

我注意到,当基于视图的NSTableView在接口生成器中将highlight属性设置为"源列表" 时,它会呈现具有振动效果的背景(即,它模糊了其父窗口背后的内容)。

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

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

另外,我无法通过NSTableViewDelegate方法禁止细胞突出显示:

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

...因为这会使我的单元格内的文本字段无法选择,因而无法使用。

我找到了this question,它基本上要求相反的解决方案(即,当设置突出显示时禁用振动"源列表"),所以按照那里的答案我在托管我的表视图的视图控制器上尝试了这段代码:

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

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

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

......但它并没有改变任何事情。

有没有简单的解决方法?

1 个答案:

答案 0 :(得分:1)

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

  1. 为包含表格视图的滚动视图提供透明背景颜色。
  2. 取消选中"绘制背景"滚动视图。
  3. 为表格视图提供透明背景颜色。
  4. ...然后我看到了NSVisualEffectView我将桌子放在里面。