8 菜单与命令
2 分钟阅读
原文链接: https://developer.apple.com/documentation/swiftui/menus-and-commands
8 菜单与命令
以节省空间、依赖上下文的方式访问命令和控件。
概述
用菜单为人们提供对常用命令的便捷访问。你可以用 commands(content:) 场景修饰符向 macOS 或 iPadOS 应用的菜单栏添加条目,也可以用 contextMenu(menuItems:) 视图修饰符创建在人们当前任务附近展开的上下文菜单。

把 Menu 实例嵌套在其他实例中,即可创建子菜单。用 Divider 视图在菜单元素之间创建分隔线。
关于设计指导,参见 Human Interface Guidelines 中的菜单。
构建菜单栏
- 用 SwiftUI 构建并自定义菜单栏 —— 为 iPadOS 和 macOS 构建原生菜单栏,提供无缝的跨平台体验。
创建菜单
- 用自适应控件填充 SwiftUI 菜单 —— 用控件填充菜单并直观地组织内容,改进你的应用。
- Menu —— 呈现操作菜单的控件。
- menuStyle(_:) —— 设置该视图内菜单的样式。
创建上下文菜单
- contextMenu(menuItems:) —— 为视图添加上下文菜单。
- contextMenu(menuItems:preview:) —— 为视图添加带自定义预览的上下文菜单。
- contextMenu(forSelectionType:menu:primaryAction:) —— 为视图添加基于条目的上下文菜单。
定义命令
- commands(content:) —— 为场景添加命令。
- commandsRemoved() —— 移除被修改场景所定义的所有命令。
- commandsReplaced(content:) —— 用构建器中的命令替换被修改场景所定义的所有命令。
- Commands —— 遵循该协议的类型表示一组相关命令,可以通过 macOS 的主菜单或 iOS 的按键命令暴露给用户。
- CommandMenu —— 命令菜单是独立、顶层的容器,用来放置执行相关应用专属命令的控件。
- CommandGroup —— 你可以添加到已有命令菜单中的一组控件。
- CommandsBuilder —— 从多表达式闭包构造命令集。与
ContentBuilder一样,它支持闭包体中最多的十个表达式。 - CommandGroupPlacement —— 你可以把新命令组放在相对于它们的标准位置。
获取内置命令组
- SidebarCommands —— 用于操作窗口侧边栏的内置命令集。
- TextEditingCommands —— 用于搜索、编辑和转换文本选区的内置命令组。
- TextFormattingCommands —— 用于转换应用于文本选区的样式的内置命令集。
- ToolbarCommands —— 用于操作窗口工具栏的内置命令集。
- ImportFromDevicesCommands —— 可以从附近设备导入内容的内置命令集。
- InspectorCommands —— 用于操作检查器的内置命令集。
- EmptyCommands —— 空的命令组。
显示菜单指示器
- menuIndicator(_:) —— 设置该视图内控件的菜单指示器可见性。
- menuIndicatorVisibility —— 要应用到视图内控件的菜单指示器可见性。
配置菜单关闭行为
- menuActionDismissBehavior(_:) —— 告诉菜单在执行动作后是否关闭。
- MenuActionDismissBehavior —— 菜单关闭行为的选项集合。
设置偏好顺序
- menuOrder(_:) —— 设置从该视图呈现的菜单中条目的偏好顺序。
- menuOrder —— 从该视图呈现的菜单中条目的偏好顺序。
- MenuOrder —— 菜单呈现其内容的顺序。
已弃用的类型
- MenuButton —— 按下时显示包含一组选项的菜单的按钮。
- PullDownButton
- ContextMenu —— 把视图作为菜单项在上下文菜单中呈现的容器。