【发布时间】:2026-01-19 20:00:01
【问题描述】:
对于旧版本的 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.
}
...
}
但是当我运行它时,对窗口没有任何影响。 (当我将它设置在窗口内,并将其叠加在我的另一个视图之上时,模糊可以正常工作,但我只希望窗口模糊。)我也尝试在我的 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)
}
...
}
想知道我在寻找什么:NSVisualEffectView Vibrancy
【问题讨论】:
-
你有 blurryView 作为@IBOutlet。那你为什么要在代码中配置它。您可以在界面生成器中使用所有选项。另外,为什么要手动将视图添加为子视图?
-
你能贴一张你的故事板或xib文件的图片吗?
-
@mangerlahn gyazo.com/cd4ba905f733ac1040e9f2862b4d56b7。我在情节提要上找不到该选项,而其他人似乎就是这样添加它的。对于 swift 和 xcode 来说也相对较新,因此可能会遗漏一些非常明显的东西