xcode 如何隐藏SwiftUI中的标题栏?(适用于MacOS应用程序)

b5lpy0ml  于 2023-03-13  发布在  Swift
关注(0)|答案(3)|浏览(258)

我知道如何用情节提要隐藏标题栏。

但我无法在SwiftUI中执行此操作。
我想隐藏标题栏和控制按钮,并使浮动图像视图。

h7wcgrx3

h7wcgrx31#

import SwiftUI
@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }.windowStyle(HiddenTitleBarWindowStyle())
    }
}

尝试HiddenTitleBarWindowStyle()

kknvjkwl

kknvjkwl2#

删除使用Mac Catalyst构建的Mac应用程序中的标题栏

通过删除标题栏来显示填充整个窗口高度的内容。
默认情况下,使用Mac Catalyst构建的Mac应用程序在其窗口顶部显示一个标题栏。标题栏与窗口内容之间有一条水平线分隔。一些Mac应用程序(如“信息”和“联系人”)在其主窗口中没有标题栏。相反,窗口顶部仅显示“关闭”、“最小化”和“缩放”按钮,这些按钮与窗口内容之间没有分隔符。在此UI设计中,内容区域填充窗口的整个高度。下图在两个窗口中说明了这些样式。第一个窗口显示标题栏,而第二个窗口没有标题栏。两个窗口的屏幕快照,一个堆叠在另一个之上,每个窗口的内容区域都有深色背景。
删除标题栏如果选择设计不带标题栏的窗口,则必须将其从窗口中删除。若要删除标题栏,请将标题栏的titleVisibility属性设置为UITitlebarTitleVisibility.hidden,并将toolbar属性设置为nil。下面的代码演示如何在设置新场景期间从窗口中删除标题栏及其分隔符。

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    
    guard let windowScene = (scene as? UIWindowScene) else { return }
    
    #if targetEnvironment(macCatalyst)
    if let titlebar = windowScene.titlebar {
        titlebar.titleVisibility = .hidden
        titlebar.toolbar = nil
    }
    #endif

}

有关详细信息,请单击here

qc6wkl3g

qc6wkl3g3#

我找不到在SwiftUI中完全隐藏工具栏的方法。但这是一个可能的解决方案。您可以将此代码放在AppDelegate文件中。

func applicationDidFinishLaunching(_ aNotification: Notification) {
    let window = NSApplication.shared.windows.first!
    window.titlebarAppearsTransparent = true
    window.backgroundColor = .white
    window.standardWindowButton(.closeButton)!.isHidden = true
    window.standardWindowButton(.miniaturizeButton)!.isHidden = true
    window.standardWindowButton(.zoomButton)!.isHidden = true
}

使用这段代码会使工具栏看起来像是隐藏的,而实际上它仍然在那里。但是按钮是隐藏的,背景是透明的。

相关问题