如何在 MacCatalyst 中创建具有 Vibrant 背景的 UIWindow?

How to create an UIWindow with Vibrant background in MacCatalyst?

我们可以在本机 mac 应用程序中使用 NSWindow 和 NSVisualEffectView 轻松创建此效果,但我们如何在为 MacCatalyst 构建的应用程序中创建此效果?

当然,为 UIWindow 设置 alpha = 0 并在其上添加 UIVisualEffectView 并不能解决问题,事情没那么简单。

您需要将 NSVisualEffectView 添加为 NSWindow.contentView 的子视图。

NSWindow 不适用于 Mac Catalyst 应用程序,因此您必须按照 here, or use a library like Dynamic(完全披露:我是作者)的说明创建 macOS 插件没有插件如下:

let nsWindow = Dynamic.NSApplication.sharedApplication.delegate.hostWindowForUIWindow(view.window)

let visualEffectView = Dynamic.NSVisualEffectView(frame: NSZeroRect)
nsWindow.contentView.addSubview(visualEffectView, positioned: -1, relativeTo: nil)
visualEffectView.frame = nsWindow.contentView.bounds.asCGRect
visualEffectView.autoresizingMask = 18 /*NSViewWidthSizable | NSViewHeightSizable*/

结果是这样的:


编辑:不要忘记也使控制器的视图透明:

view.backgroundColor = .clear