对于旧版本的Swift/Xcode,似乎有很多问题,但由于某种原因,它还没有使用最新的更新.我创建了一个NSVisualEffectView,blurryView,并将子视图添加到我的主视图中:
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.
}
...
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,窗口没有任何影响.(当我将它设置在窗口内,并将其叠加在我的另一个视图之上时,模糊工作正常,但我只希望窗口模糊.)我也尝试在App Delegate类中执行相同的操作,但我可以将我的窗口连接为插座,因此无法将模糊视图添加到窗口.这是代码的样子:
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)
}
...
}
Run Code Online (Sandbox Code Playgroud)
想知道我在寻找什么:NSVisualEffectView Vibrancy
Swift 5:只需将其添加到您的 viewWillAppear 中,它就应该可以工作:
override func viewWillAppear() {
super.viewWillAppear()
// Adds transparency to the app
view.window?.isOpaque = false
view.window?.alphaValue = 0.98 // you can remove this line but it adds a nice effect to it
let blurView = NSVisualEffectView(frame: view.bounds)
blurView.blendingMode = .behindWindow
blurView.material = .fullScreenUI
blurView.state = .active
view.window?.contentView?.addSubview(blurView)
}
Run Code Online (Sandbox Code Playgroud)
它非常简单:
NSVisualEffectView直接将a拖动为场景主视图的子视图.Properties Inspector设置Blending Mode为Behind WindowNSVisualEffectView这是一个例子:
Panel 1 View Controller是我的模糊视图,Background View是我的"真实"视图层次结构中的第一个(非模糊)视图.
| 归档时间: |
|
| 查看次数: |
2768 次 |
| 最近记录: |