【问题标题】:How can I hide title bar in SwiftUI? (for MacOS app)如何在 SwiftUI 中隐藏标题栏? (适用于 MacOS 应用程序)
【发布时间】:2022-01-26 19:07:27
【问题描述】:

那里????

我知道在 Storyboard 中隐藏标题栏。

但我在 SwiftUI 中找不到路。

我想用控制按钮隐藏标题栏并制作浮动图像视图。

请告诉我。

如果你知道相关的例子,请告诉我。

我的小英语对不起.. ????

【问题讨论】:

标签: swift xcode macos swiftui


【解决方案1】:
import SwiftUI
@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }.windowStyle(HiddenTitleBarWindowStyle())
    }
}

试试HiddenTitleBarWindowStyle()

【讨论】:

  • 我已经试过了。它只是隐藏标题。我也想隐藏控制按钮(就像我附加的 gif 图像)
  • navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) 请试试这个
  • 你能告诉我我在哪里插入你的代码吗? 我是 SwiftUI 的菜鸟。我不知道在哪里可以得到“navigationItem”。
  • 代码应该插入到应用级别而不是视图级别。您很可能会在文件结构中的 [your app name]App 文件中找到它。
  • @Jokz 抱歉,我的问题还不够。我想知道MacOS应用案例。
【解决方案2】:

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

通过移除标题栏来显示填充整个窗口高度的内容。

默认情况下,使用 Mac Catalyst 构建的 Mac 应用会在其窗口顶部显示一个标题栏。一条水平线将标题栏与窗口内容分开。 某些 Mac 应用程序(例如“信息”和“通讯录”)的主窗口中没有标题栏。相反,窗口顶部仅显示关闭、最小化和缩放按钮,它们与窗口内容之间没有分隔符。在这个 UI 设计中,内容区域填充了窗口的整个高度。 下图在两个窗口中说明了这些样式。第一个窗口显示一个标题栏,而第二个没有。 两个窗口的屏幕截图,一个堆叠在另一个之上,每个窗口的内容区域都有深色背景。

删除标题栏 如果您选择设计没有标题栏的窗口,则必须将其从窗口中删除。要删除标题栏,请将标题栏的 titleVisibility 属性设置为 UITitlebarTitleVisibility.hidden 并将工具栏属性设置为 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了解更多信息

【讨论】:

  • 感谢您的评论。但我需要 AppKit 或 SwiftUI 解决方案。
猜你喜欢
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
相关资源
最近更新 更多