繁体   English   中英

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

[英]How to disable Full Screen button with SwiftUI 2 on macOS

正如标题所建议的,我应该如何在 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())
}

效果应该如下,第三个绿色按钮变成透明灰色: 在此处输入图像描述

YourAppName.Swift

import SwiftUI

@main
struct YourAppName: App {
   var body: some Scene {
      WindowGroup {
            HStack {
                   ContentView().onAppear{
                         // Code Below To Disable FullScreen Mode
                         let _ = NSApplication.shared.windows.map { 
                                $0.styleMask = [ .titled,.closable,.miniaturizable]
                            }
                      }
                  } 
            }
    }
}

您可以使用.onAppear修饰符来禁用全屏按钮。

struct MacApp: App {
var body: some Scene {
   WindowGroup {
       ContentView()
           .onAppear {
               DispatchQueue.main.async {
                   NSApplication.shared.windows.forEach { window in
                       window.standardWindowButton(.zoomButton)?.isEnabled = false
                   }
               }
           }
   }
   .windowStyle(HiddenTitleBarWindowStyle())
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM