SwiftUI - 菜单栏
菜单栏是出现在应用程序窗口顶部的 UI 元素,或者可以以列表格式显示各种选项或命令。每个菜单栏都有自己的菜单,其中包含各种操作、任务或按钮。
例如,菜单包括文件、编辑、查找、查看等。SwiftUI 不提供任何预定义的修饰符或方法来创建菜单栏。此外,菜单栏仅受 macOS 13+ 支持,除 macOS 外,没有其他 Apple 平台(如 iOS、iPad、watchOS 等)支持菜单栏。
在 SwiftUI 中创建菜单栏
在 SwiftUI 中,我们可以借助 MenuBarExtra() 方法创建菜单栏。此方法使用用作标签的键创建一个菜单栏附加项。它定义了应用程序的主要场景。我们还可以在菜单栏中添加图片和系统图片。menubarExtra 的输出将显示在实际的 macOS 中,而不是模拟器中。
语法
以下是语法 −
MenuBar(_titleKey: String, content: ()->Content)
参数
此视图使用以下参数 −
titleKey:表示项目的用途。
content:在屏幕上显示元素的视图。
示例
以下 SwiftUI 程序创建菜单栏。
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
// Menu Bar Item
MenuBarExtra("MyData", systemImage: "star.fill") {
Button("Open") {
print("Open Window clicked")
}
Button("File") {
print("Settings clicked")
}
Button("Project") {
print("Settings clicked")
}
Button("Settings") {
print("Settings clicked")
}
Divider()
Button("Quit") {
NSApplication.shared.terminate(nil)
}
}
}
}
输出
在 SwiftUI 中设置 menuBarExtra 的样式
在 SwiftUI 中,我们可以借助 menuBarExtraStyle() 修饰符来设置 menuBarExtra 的样式。此修饰符提供各种样式来设置由指定场景创建的菜单栏的样式。默认情况下,它是在 .automatic 中设置样式,但我们可以在 .menu 和 .window 中设置菜单样式。
语法
以下是语法 −
func menuBarExtraStyle(_ style: S) -> some Scene
示例
以下 SwiftUI 程序用于设置菜单栏样式。
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
// 菜单栏项目
MenuBarExtra("MyData", systemImage: "star.fill") {
Button("Open") {
print("Open Window clicked")
}
Button("File") {
print("Settings clicked")
}
Button("Project") {
print("Settings clicked")
}
Button("Settings") {
print("Settings clicked")
}
Divider()
Button("Quit") {
NSApplication.shared.terminate(nil)
}
}.menuBarExtraStyle(.automatic)
}
}
输出

