更改NSVisualEffectView的颜色

问题描述 投票:0回答:1

我目前正在尝试更改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的颜色?

swift cocoa appkit
1个回答
0
投票

您不更改视觉效果视图的颜色,因为它没有颜色。视觉效果视图根据视图的材质和混合模式混合背景和前景(子视图)。 “背景”可以是窗口内的视觉效果视图下的内容,也可以是窗口后的内容。

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

此视觉效果视图的混合模式位于窗口“后面”。请注意,您从窗口后面看到的绿色是视觉效果视图中的混合背景。Behind

此视觉效果视图的混合模式是在窗口内。请注意,您会看到红色框,它是视觉效果视图的背景。Within

在两种情况下,材料的外观都是“轻”。不同的材料将具有不同的外观。

没有一种通用的方法可以通过视觉效果视图创建“模糊的彩色背景”。根据材料/混合模式的组合,应以某种方式使用它,并且每种方法都有不同的外观。

© www.soinside.com 2019 - 2024. All rights reserved.