swift - 如何在 macOS 上使用 SwiftUI 2 禁用全屏按钮

标签 swift user-interface swiftui

正如标题所建议的,我应该如何在 macOS 上使用 SwiftUI 2 禁用全屏按钮?

我能找到的唯一信息似乎是使用来自 NSWindow 的功能.在 SwiftUI 2 中是否有一种本地方法可以做到这一点?

最佳答案

你可以简单地使用.onReceive修饰符来达到目的:

struct MacApp: App {
var body: some Scene {
    WindowGroup {
        ContentView()
            .frame(width: 480, height: 272)
            .fixedSize()
            .onReceive(NotificationCenter.default.publisher(for: NSApplication.willUpdateNotification), perform: { _ in
                for window in NSApplication.shared.windows {
                    window.standardWindowButton(.zoomButton)?.isEnabled = false
                }
            })
    }
    .windowStyle(HiddenTitleBarWindowStyle())
}

效果应该是这样的,第三个绿色按钮变成透明灰色: enter image description here

关于swift - 如何在 macOS 上使用 SwiftUI 2 禁用全屏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65858882/

相关文章:

swift - 如何使用 SwiftUI 从 CloudKit 检索数据

swift - 后台进程作为 NSOperation 或线程来监视和更新文件

jQuery BubblePopup 不显示在模式对话框上

swift - 使用 swiftui 进行 macOS 开发时,无法看到预览,也无法看到应用程序的主窗口(运行时)

Git GUI 类似于 MS Windows 中的 HG Workbench

python - wxPython - py2exe - exe 文件旧窗口

ios - 在 SwiftUI 中添加圆角半径时如何隐藏背景颜色的溢出?

ios - Swift - 检测应用程序何时发送到后台但不检测设备何时被锁定

ios - 将小数格式化为特定小数位数的函数

ios - 快速删除字典指定索引处的值