【问题标题】:Accessing NSWindow-like properties in Catalyst macOS app在 Catalyst macOS 应用程序中访问类似 NSWindow 的属性
【发布时间】:2020-07-30 15:53:09
【问题描述】:

我正在考虑将我的 macOS 应用程序移植到 Catalyst。

我的应用在所有其他应用窗口(包括 Dock)之上显示了一个透明窗口(没有标题栏,背景清晰)。 为此,在我使用的非催化剂代码中:

window.isOpaque = false
window.hasShadow = false
window.backgroundColor = .clear
window.styleMask = .borderless
window.isMovableByWindowBackground = true
window.level = .statusBar

使用 UIKit,我目前只能删除工具栏:

window.titleBar.titleVisibility

...但不知道其他设置。

我计划将来在 App Store 上提供该应用,但如果这样做的唯一方法是使用私有 API 进行破解,那很好。

有什么想法吗?

提前致谢

【问题讨论】:

    标签: swift macos nswindow uiwindow catalyst


    【解决方案1】:

    没有用于此操作的官方 API,但您可以轻松访问 NSWindow 实例并直接对其进行修改。您可以手动执行此操作,也可以使用 Dynamic 之类的库(完全披露:我是作者):

    let window = Dynamic.NSApplication.sharedApplication.delegate.hostWindowForUIWindow(uiWindow)
    
    window.isOpaque = false
    window.hasShadow = false
    window.backgroundColor = Dynamic.NSColor.clearColor
    window.styleMask = 0 /*borderless*/
    window.isMovableByWindowBackground = true
    window.level = 25 /*statusBar*/
    

    【讨论】:

    • 这是否也适用于 App Store 或者我的应用会被拒绝?
    • 我还没有尝试提交使用该库的应用程序,但由于它使用的每个 API 都已记录在案,因此我没有看到拒绝的理由。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    相关资源
    最近更新 更多