SwiftUI 2.0 在 macOS 上禁用窗口的缩放按钮

Posted

技术标签:

【中文标题】SwiftUI 2.0 在 macOS 上禁用窗口的缩放按钮【英文标题】:SwiftUI 2.0 disable window's zoom button on macOS 【发布时间】:2021-02-03 02:58:39 【问题描述】:

我正在为 Mac 编写一个小应用程序..

我需要禁用(绿色按钮)才能全屏。

我使用的是 SwiftUI App 而不是 AppKit App Delegate

找不到如何为我的应用禁用全屏按钮。

有什么想法吗?

【问题讨论】:

除非有更简单的方法,否则本文提供了一些在 SwiftUI 生命周期中访问窗口的重要技巧:lostmoa.com/blog/… 嗯..检查...找不到解决方案。不过还是谢谢! 【参考方案1】:

因为没有人用更干净的 SwiftUI 唯一版本来回答:

struct ContentView: View 
    var body: some View 
        HostingWindowFinder  window in
            window?.standardWindowButton(.zoomButton)?.isHidden = true //this removes the green zoom button
        
        Text("Hello world")
    


struct HostingWindowFinder: NSViewRepresentable 
    var callback: (NSWindow?) -> ()

    func makeNSView(context: Self.Context) -> NSView 
        let view = NSView()
        DispatchQueue.main.async  [weak view] in
            self.callback(view?.window)
        
        return view
    
    func updateNSView(_ nsView: NSView, context: Context) 

HostingWindowFinder 概念取自https://lostmoa.com/blog/ReadingTheCurrentWindowInANewSwiftUILifecycleApp/

【讨论】:

哇...非常感谢大家的帮助..这很有效,非常感谢!

以上是关于SwiftUI 2.0 在 macOS 上禁用窗口的缩放按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftUI 在 macOS 上可靠地检索窗口的背景颜色?

SwiftUI - TextField 在 macOS 上的 List 中被禁用(不可编辑)

SwiftUI:如何在 macOS 11 上设置工具栏的标题?

使用 SwiftUI 更改 macOS 窗口级别(制作浮动窗口)

如何在 SwiftUI 中隐藏 macOS 中视图/窗口的状态栏?

SwiftUI 菜单按钮最初显示为禁用