【问题标题】:How to create an UIWindow with Vibrant background in MacCatalyst?如何在 MacCatalyst 中创建具有鲜艳背景的 UIWindow?
【发布时间】:2020-04-28 04:52:49
【问题描述】:

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

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

【问题讨论】:

    标签: uiwindow uivisualeffectview mac-catalyst


    【解决方案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 非常有趣和有前途。谢谢!
    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多