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

Posted

技术标签:

【中文标题】如何在 SwiftUI 中隐藏 macOS 中视图/窗口的状态栏?【英文标题】:How can I hide statusBar of a View/Window in macOS in SwiftUI? 【发布时间】:2020-11-22 02:30:45 【问题描述】:

我试图隐藏视图的 statusBar,但我注意到它在 macOS 中不起作用,Blur 也不起作用 opacity不工作!看起来我正在尝试编程新语言,苹果说代码到位并应用到任何地方!为什么我不能在 macOS 中完成这些简单的任务?

struct ContentView: View 
    var body: some View         
        HStack 
            Button  print("OK was clicked!")  label:  Text("OK").frame(width: 100) 
            Button  print("Close was clicked!")  label:  Text("Close").frame(width: 100) 
        
        .frame(width: 400, height: 200)
        .background(Color.white.opacity(0.4).blur(radius: 0.5))
        //.statusBar(hidden: true)
    

import SwiftUI

@main
struct macOSApp: App 
    var body: some Scene 
        WindowGroup 
            ContentView()
        
    

【问题讨论】:

这是否回答了您的问题***.com/a/60252103/12299030? 也谢谢我没有看到 App Delegate!? 【参考方案1】:

希望对您有所帮助。 谢谢。

class AppDelegate: NSObject, UIApplicationDelegate 
func applicationDidFinishLaunching(_ aNotification: Notification) 

    // Create the content view, to display the contents
    let contentView = ContentView()
    //to display content view beyond status bar.
        .edgesIgnoringSafeArea(.top)  

    // Now, just create the window and set the content view. 
    window = NSWindow(
        contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
        styleMask: [.titled, .closable, .miniaturizable, .texturedBackground, .resizable, .fullSizeContentView],
        backing: .buffered, defer: false)
    window.center()
    window.setFrameAutosaveName("Main Window")
    
    //So, this does the maigc
    //Hides the titlebar.
    window.titlebarAppearsTransparent = true 
    window.titleVisibility = .hidden        

    window.contentView = NSHostingView(rootView: contentView)
    window.makeKeyAndOrderFront(nil)


【讨论】:

我的项目中没有看到App Delegate,我做了截图 在你的 macOsApp.swift 中。您可以在 macosApp 结构中的以下行 @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 并在该文件中的某处添加复制并粘贴已编辑的答案。 你能解释更多吗,我不能让它工作或者也许是一个例子

以上是关于如何在 SwiftUI 中隐藏 macOS 中视图/窗口的状态栏?的主要内容,如果未能解决你的问题,请参考以下文章

当视图在 SwiftUI 中消失时如何隐藏 NavigationBar?

如何在 SwiftUI 的标签栏的特定视图中隐藏导航栏?

如何在 iOS 15 中使用 SwiftUI 在特定视图中隐藏 TabBar

如何在 macOS 上检测 SwiftUI 中的键盘事件?

如何在 macOS 上检测 SwiftUI 中的键盘事件?

在 macOS 上的 SwiftUI 列表视图中选择和删除核心数据实体