对于旧版本的 Swift/Xcode 似乎有很多问题,但由于某种原因它不能与最新更新一起使用。我创建了一个 NSVisualEffectView、blurryView,并将 subview 添加到我的主视图中:
class ViewController: NSViewController {
@IBOutlet weak var blurryView: NSVisualEffectView!
override func viewDidLoad() {
super.viewDidLoad()
//background styling
blurryView.wantsLayer = true
blurryView.blendingMode = NSVisualEffectBlendingMode.behindWindow
blurryView.material = NSVisualEffectMaterial.dark
blurryView.state = NSVisualEffectState.active
self.view.addSubview(blurryView, positioned: NSWindowOrderingMode.above, relativeTo: nil)
// Do any additional setup after loading the view.
}
...
}
但是当我运行它时,对窗口没有任何影响。 (当我将它设置在窗口内,并将它放在我的另一个 View 之上时,模糊效果正常,但我只希望窗口模糊。)我也尝试在我的 App Delegate 类中做同样的事情,但我可以'将我的窗口连接为 socket ,因此无法将模糊 View 添加到窗口。代码如下所示:
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application
blurryView.wantsLayer = true
blurryView.blendingMode = NSVisualEffectBlendingMode.withinWindow
blurryView.material = NSVisualEffectMaterial.dark
blurryView.state = NSVisualEffectState.active
self.window.contentView?.addSubview(blurryView)
}
...
}
了解我是否正在寻找:NSVisualEffectView Vibrancy
最佳答案
它工作起来很简单:
- 在 Interface Builder 中,直接拖动一个
NSVisualEffectView
作为场景主视图的 subview 。 - 在
Properties Inspector
中将Blending Mode
设置为Behind Window
- 将您需要的其余 View 添加为
NSVisualEffectView
的 subview
- 就是这样,你完成了
这是一个例子:
Panel 1 View Controller
是我的模糊 View ,Background View
是我“真实” View 层次结构中的第一个(非模糊) View 。
关于swift - 如何使用 NSVisualEffectView 将窗口与背景混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475551/