如何在 MacCatalyst 中创建具有鲜艳背景的 UIWindow?
Posted
技术标签:
【中文标题】如何在 MacCatalyst 中创建具有鲜艳背景的 UIWindow?【英文标题】:How to create an UIWindow with Vibrant background in MacCatalyst? 【发布时间】:2020-04-28 04:52:49 【问题描述】:我们可以在本机 mac 应用程序中使用 NSWindow 和 NSVisualEffectView 轻松创建此效果,但我们如何在为 MacCatalyst 构建的应用程序中实现呢?
当然,为 UIWindow 设置 alpha = 0 并在其上添加 UIVisualEffectView 并不能解决问题,它没那么简单。
【问题讨论】:
【参考方案1】:您需要将NSVisualEffectView
添加为NSWindow.contentView
的子视图。
NSWindow
不适用于 Mac Catalyst 应用程序,因此您必须按照here 的说明创建一个 macOS 插件,或者使用像 Dynamic 这样的库(完全披露:我是作者)来做到这一点没有插件如下:
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
【讨论】:
Dynamic 非常有趣和有前途。谢谢!以上是关于如何在 MacCatalyst 中创建具有鲜艳背景的 UIWindow?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中创建具有自定义形状的 UIButton?