更改 NSVisualEffectView 的颜色

Change color of NSVisualEffectView

我目前正在尝试更改 NSVisualEffectView 的色调。这是我到目前为止得到的:

class MainViewViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // create a colored view to tint the visual effect view
        let coloredView = NSView(frame: self.view.frame)
        coloredView.layer?.backgroundColor = NSColor(red: 1, green: 0, blue: 0, alpha: 0.5).cgColor

        // create the visual effect view for the background blur
        let visualEffectView = NSVisualEffectView(frame: self.view.frame)
        visualEffectView.addSubview(coloredView)
        // add the visual effect view
        self.view.addSubview(visualEffectView, positioned: NSWindow.OrderingMode.below, relativeTo: nil)

    }
}

如您所见,我尝试添加另一个图层来为视觉效果视图着色。但是,这没有用。

我可以更改 NSVisualEffectView 的颜色吗?

您不更改颜色 "of" 视觉效果视图,因为它没有颜色。视觉效果视图根据视图的 material 和混合模式混合背景和前景(子视图)。 "background" 是 window 中视觉效果视图下的内容,或者是 window.

后面的内容

在这些示例中,在红色 NSBox 中的视觉效果视图中有一个蓝色 NSBox。

这个视觉效果视图的混合模式是"behind"window。请注意,您在 window 后面看到的绿色是视觉效果视图中的混合背景。

这个视觉效果视图的混合模式是"within"window。请注意,您会看到红色框,它是视觉效果视图的背景。

在这两种情况下,material 的外观都是 "light"。不同的material会有不同的外观。

"blurry colored background" 没有通用的方法来创建视觉效果视图。它旨在以特定方式使用,基于 material/blending 模式组合,每种方式都有不同的外观。