在 Mac 或 iPad 上,屏幕顶部的菜单栏会显示 App 或游戏中的顶层菜单。

Mac 用户非常熟悉 macOS 菜单栏,并依靠它来帮助了解 App 的功能和找到所需的命令。为使你的 App 或游戏让 macOS 用户感到自在,提供一致的菜单栏体验至关重要。
iPad 上的菜单栏菜单类似于 Mac 上的菜单栏菜单,有着相同的显示顺序和熟悉的菜单项组。采用 Mac 上相同体验的菜单结构时,也可帮助用户立即了解和利用 iPad 上的菜单栏。
iPadOS 中的键盘快捷键使用与 macOS 相同的模式。有关指南,请参阅标准键盘快捷键。

菜单栏中的菜单在外观和行为特征上与所有菜单类型大体一样。若要全面了解菜单以及如何整理菜单项和为其添加标签,请参阅菜单。
1、剖析
以下菜单在菜单栏中呈现时,将按如下所列顺序显示。
- App 名称(你可以提供 App 名称的简短版本作为此菜单的标题)
- 文件
- 编辑
- 格式
- 显示
- App 特定菜单(如有)
- 窗口
- 帮助
此外,macOS 菜单栏前端包括苹果菜单,后端包括菜单栏附加项。有关指南,请参阅 macOS 平台考量因素。
2、最佳实践
支持默认系统定义菜单及其顺序。用户期望以其熟悉的顺序找到菜单和菜单项。在多数情况下,系统会实现标准菜单项的功能,因此你无需考虑这方面。例如,当用户选择标准文本栏中的文本时,系统会将“编辑”>“拷贝”菜单项变为可用。
始终显示同一菜单项组。保持菜单项可见有助于用户了解你的 App 支持哪些操作,即使这些操作在当前环境下不可用。如果菜单栏项不可操作,请停用该操作,而不是将其从菜单中隐藏。
通过熟悉的图标表示菜单项操作。图标有助于用户识别你 App 中的常用操作。使用与系统相同的图标表示“拷贝”、“共享”和“删除”等操作,不管它们出现在哪个位置。对于表示常用操作的图标列表,请参阅标准图标。有关更多指南,请参阅菜单。
为所包括的标准菜单项支持定义的键盘快捷键。用户会期望使用其已知的键盘快捷键来执行标准菜单项,如“拷贝”、“剪切”、“粘贴”、“保存”和“打印”。仅在必要时才自定义键盘快捷键。有关指南,请参阅标准键盘快捷键。
优先使用简短的单字词菜单标题。菜单的间距和外观会受各种各样因素(例如不同显示尺寸和菜单栏附加项的存在)影响。单字词菜单标题在菜单栏中的效果特别好,因为其占用的空间很小,且易于用户浏览。如需在菜单标题中使用多个字词,请使用标题式大写。
3、App 菜单
App 菜单会列出应用于整个 App 或游戏的项目,而非应用于特定任务、文稿或窗口的项目。为了帮助用户快速识别活跃的 App,菜单栏会以粗体显示 App 名称。
App 菜单通常包含以下菜单项,并按如下顺序列出。
| 菜单项 | 操作 | 指南 |
|---|---|---|
| 关于 App 名称 | 显示 App 的“关于”窗口,其中包括版权和版本信息。 | 优先使用最多包括 16 个字符的短名称。不要包括版本号。 |
| 设置… | 打开设置窗口,或 iPadOS 设置中的 App 页面。 | 仅用于 App 级设置。如果你还提供文稿特定设置,请将其放置在“文件”菜单中。 |
| 可选的 App 特定项目 | 执行自定义的 App 级设置或配置操作。 | 在同一组内的“设置”项之后列出自定义的 App 配置项。 |
| 服务(仅限 macOS) | 显示包括系统和其他 App 服务的子菜单,且这些服务适用于当前环境。 | |
| 隐藏 App 名称(仅限 macOS) | 隐藏 App 及其所有窗口,然后激活最近使用的 App。 | 使用与提供给“关于”项相同的 App 短名称。 |
| 隐藏其他(仅限 macOS) | 隐藏所有其他打开的 App 及其窗口。 | |
| 全部显示(仅限 macOS) | 在 App 窗口后显示所有其他打开的 App 及其窗口。 | |
| 退出 App 名称 | 退出 App。按下 Option 键可使“退出 App 名称”更改为“退出并保留窗口”。 | 使用与提供给“关于”项相同的 App 短名称。 |
将“关于”菜单项显示为首项。在“关于”菜单项之后包括一个分隔符,使该项在组中单独显示。
4、“文件”菜单
“文件”菜单包含可帮助用户管理 App 支持的文件或文稿的命令。如果你的 App 不处理任何类型的文件,你可以重新命名或省去此菜单。
“文件”菜单通常包含以下菜单项,并按如下顺序列出。
| 菜单项 | 操作 | 指南 |
|---|---|---|
| 新建项目 | 创建新文稿、文件或窗口。 | 针对项目,使用 App 可创建的项目类型的名称术语。例如,“日历”使用了日程和日历。 |
| 打开 | 可打开所选项目,或显示一个界面供用户在其中选择要打开的项目。 | 如果用户需要在单独的界面中选择项目,命令后面会紧接一个省略号,表示需要更多输入。 |
| 打开最近使用 | 显示一个子菜单,其中列出用户可选择的最近打开的文稿和文件,且通常包括清除菜单项。 | 在子菜单中列出用户可识别的文稿和文件名,不要显示文件路径。将文稿按用户上次打开的顺序依次列出,并将最近打开的文稿放在第一个。 |
| 关闭 | 关闭当前的窗口或文稿。按下 Option 键可使“关闭”更改为“全部关闭”。对于基于标签页的窗口,“关闭”会替换为“关闭标签页”。 | 考虑在基于标签页的窗口中添加“关闭窗口”项,让用户只需点按或轻点一下即可关闭整个窗口。 |
| 关闭标签页 | 关闭基于标签页的窗口中的当前标签页。按下 Option 键可使“关闭标签页”更改为“关闭其他标签页”。 | |
| 关闭文件 | 关闭当前文件及其所有关联窗口。 | 如果你的 App 可打开同一文件的多个视图,请考虑支持此菜单项。 |
| 保存 | 保存当前的文稿或文件。 | 在用户工作时自动定期保存更改,使其无需一直选取“文件”>“保存”。对于新文稿,请提示用户输入名称并选取位置。如果你需要让用户以多种格式保存文件,请优先使用可让用户在“保存”表单中选取格式的弹出式菜单。 |
| 全部保存 | 保存所有打开的文稿。 | |
| 复制 | 复制当前文稿,并使这两个文稿保持打开。按下 Option 键可使“复制”更改为“保存为”。 | 优先使用“复制”,而非“保存为”、“导出”、“拷贝到”和“保存到”等菜单项,因为此类项目未能阐明原始文件与新文件之间的关系。 |
| 重新命名… | 可让用户更改当前文稿的名称。 | |
| 移到… | 提示用户为文稿选取新位置。 | |
| 导出为… | 提示用户输入名称并选取输出位置和导出文件格式。导出文件后,当前文稿会保持打开状态,且导出的文件不会打开。 | 如果你需要允许用户将内容导出为你 App 通常无法处理的格式,请保留“导出为”项。 |
| 复原到 | 在用户打开自动保存时,显示一个列出最近文稿版本的子菜单和一个用于显示版本浏览器的选项。在用户选取要恢复的版本后,该版本会替换当前文稿。 | |
| 页面设置… | 打开用于指定打印参数(如纸张大小和打印方向)的面板。文稿可保存用户指定的打印参数。 | 如果需要支持适用于特定文稿的打印参数,请包括“页面设置”项。全局性参数(如打印机名称)或用户常更改的参数(如打印份数)都应归入“打印”面板。 |
| 打印… | 打开标准的“打印”面板,可让用户通过打印机进行打印、发送传真或保存为 PDF。 |
5、“编辑”菜单
“编辑”菜单可让用户更改当前文稿或文本容器中的内容,并提供用于与剪贴板交互的命令。由于许多编辑命令适用于任何可编辑内容,即使不在基于文稿的 App 中,“编辑”菜单也非常有用。
确定“查找”菜单项是否要归入“编辑”菜单。例如,如果你的 App 允许用户搜索文件或其他类型的对象,则“查找”菜单项可能更适合在“文件”菜单中。
“编辑”菜单通常包含以下顶层菜单项,并按如下顺序列出。
| 菜单项 | 操作 | 指南 |
|---|---|---|
| 撤销 | 废除用户上一个操作的效果。 | 请清晰表明撤销的目标。例如,如果用户刚选择了一个菜单项,你可以附加该菜单项的标题,例如“撤销粘贴并匹配样式”。对于文本输入操作,你可以附加字词键入以组成“撤销键入”。 |
| 重做 | 废除上一个“撤销”操作的效果。 | 请清晰表明重做的目标。例如,如果用户刚废除了对菜单项的选择,你可以附加该菜单项的标题,例如“重做粘贴并匹配样式”。对于文本输入操作,你可以附加字词键入以组成“重做键入”。 |
| 剪切 | 移除所选数据并将其储存在剪贴板上,该数据会替换之前的剪贴板内容。 | |
| 拷贝 | 复制所选数据并将其储存在剪贴板上。 | |
| 粘贴 | 在当前插入点处插入剪贴板内容。剪贴板内容会保持不变,从而允许用户多次选取“粘贴”。 | |
| 粘贴并匹配样式 | 在当前插入点处插入剪贴板内容,并使插入的文本与周围文本在样式上相匹配。 | |
| 删除 | 移除所选数据,但不放置在剪贴板上。 | 提供“删除”菜单项而非“抹掉”或“清除”菜单项。选取“删除”相当于按下 Delete 键,因此保持命名一致性十分重要。 |
| 全选 | 高亮标记当前文稿或文本容器中的所有可选内容。 | |
| 查找 | 显示一个子菜单,其中包含用于在当前文稿或文本容器中执行搜索操作的菜单项。标准子菜单包括:查找、查找和替换、查找下一个、查找上一个、用所选内容查找,以及跳到所选内容。 | |
| 拼写和语法 | 显示一个子菜单,其中包含用于检查和纠正当前文稿或文本容器中拼写及语法的菜单项。标准子菜单包括:显示拼写和语法、立即检查文稿、键入时检查拼写、检查拼写和语法,以及自动纠正拼写。 | |
| 替换 | 显示一个子菜单,其中所含项目可让用户开关在文稿或文本容器中键入时的自动替换。标准子菜单包括:显示替换、智能拷贝/粘贴、智能引号、智能破折号、智能链接、数据检测器,以及文本替换。 | |
| 转换 | 显示一个子菜单,其中包含可转换所选文本的项目。标准子菜单包括:变为大写、变为小写,以及首字母大写。 | |
| 语音 | 显示一个子菜单,其中包含可控制系统何时以语音方式朗读所选文本的“开始朗读”和“停止朗读”项。 | |
| 开始听写 | 打开听写窗口,并将由语音字词转换的文本添加到当前插入点处。系统会自动在“编辑”菜单底部添加“开始听写”菜单项。 | |
| 表情与符号 | 显示“字符检视器”,其中包括表情符号、符号和用户可在当前插入点处插入的其他字符。系统会自动在“编辑”菜单底部添加“表情与符号”菜单项。 |
6、“格式”菜单
“格式”菜单可让用户调整当前文稿或文本容器中的文本格式化属性。如果你的 App 不支持编辑格式化文本,你可以不考虑此菜单。
“格式”菜单通常包含以下顶层菜单项,并按如下顺序列出。
| 菜单项 | 操作 |
|---|---|
| 字体 | 显示一个子菜单,其中所含项目用于调整所选文本的字体属性。标准子菜单包括:显示字体、粗体、斜体、下划线、较大、较小、显示颜色、拷贝样式,以及粘贴样式。 |
| 文本 | 显示一个子菜单,其中所含项目用于调整所选文本的文本属性。标准子菜单包括:左对齐、居中、两端对齐、右对齐、书写方向、显示标尺、拷贝标尺,以及粘贴标尺。 |
7、“显示”菜单
“显示”菜单可让用户自定义任何类型 App 的所有窗口外观。
- 重要信息“显示”菜单不包括用于在特定窗口之间导航或对其进行管理的项目;“窗口”菜单则提供此类命令。
提供“显示”菜单,即使你的 App 仅支持一小部分标准显示功能。例如,如果你的 App 不包括标签页栏、工具栏或边栏,但支持全屏幕模式,则提供仅包括“进入/退出全屏幕”菜单项的“显示”菜单。
确保每个显示/隐藏项目标题都可反映对应视图的当前状态。例如,在工具栏隐藏时提供“显示工具栏”菜单项;在工具栏可见时提供“隐藏工具栏”菜单项。
“显示”菜单通常包含以下顶层菜单项,并按如下顺序列出。
| 菜单项 | 操作 |
|---|---|
| 显示/隐藏标签页栏 | 开关基于标签页的窗口中窗体区域上方标签页栏的可见性 |
| 显示所有标签页/退出标签页概览 | 进入与退出一个视图(类似于调度中心),该视图可提供基于标签页的窗口中所有打开标签页的概览 |
| 显示/隐藏工具栏 | 开关窗口中所包括的工具栏的可见性 |
| 自定义工具栏 | 在包括工具栏的窗口中,打开可让用户自定义工具栏项目的视图 |
| 显示/隐藏边栏 | 开关窗口中所包括的边栏的可见性 |
| 进入/退出全屏幕 | 在支持全屏幕体验的 App 中,将窗口以全屏幕大小在新空间中打开 |
8、App 特定菜单
你的 App 自定义菜单会出现在菜单栏中的“显示”菜单和“窗口”菜单之间。例如,Safari 浏览器的菜单栏包括了 App 特定的“历史记录”和“书签”菜单。
为自定义命令提供 App 特定菜单。用户在搜索 App 特定命令时会查看菜单栏,尤其是在首次使用 App 时。即使命令在 App 中的其他地方可用,将其在菜单栏中列出也还是十分重要。将命令放置在菜单栏中可更易于用户找到、让你为其分配键盘快捷键以及更便于使用“全键盘控制”的用户访问。将命令从菜单栏中排除可能会带来风险,让所有用户都难以找到,即使是不常用或高级的命令。
尽可能在 App 特定菜单中反映 App 的层级结构。例如,“邮件” App 所列“邮箱”、“邮件”和“格式”菜单的顺序反映了这些项目的关系:邮箱包含邮件,而邮件包含格式。
尽量按最常规到最不常规或最常用到最不常用的顺序列出 App 特定菜单。用户更希望列表的前端菜单比后端菜单更具有针对性。
9、“窗口”菜单
“窗口”菜单可让用户在 App 的窗口之间导航以及对其进行整理和管理。
提供“窗口”菜单,即使你的 App 仅有一个窗口。包括“最小化”和“缩放”菜单项,以便使用“全键盘控制”的用户可通过键盘调用这些功能。
考虑包括用于显示和隐藏面板的菜单项。面板提供信息、配置选项或用于与主要窗口中的内容交互的工具,并通常仅在用户需要时才会出现。无需提供对字体面板或文本颜色面板的访问,因为“格式”菜单会列出这些面板。
“窗口”菜单通常包含以下顶层菜单项,并按如下顺序列出。
| 菜单项 | 操作 | 指南 |
|---|---|---|
| 最小化 | 将活跃窗口最小化到程序坞。按下 Option 键可使此项目更改为“全部最小化”。 | |
| 缩放 | 在适合窗口内容的预定义大小和用户所设窗口大小之间切换。按下 Option 键可使此项目更改为“全部缩放”。 | 避免使用“缩放”进入或退出全屏幕模式。“显示”菜单支持此类功能。 |
| 显示上一个标签页 | 在基于标签页的窗口中显示当前标签页的前一个标签页。 | |
| 显示下一个标签页 | 在基于标签页的窗口中显示当前标签页的后一个标签页。 | |
| 将标签页移到新窗口 | 在新窗口中打开当前标签页。 | |
| 合并所有窗口 | 将所有打开的窗口组合为一个标签页窗口。 | |
| 进入/退出全屏幕 | 在支持全屏幕体验的 App 中,将窗口以全屏幕大小在新空间中打开。 | 仅当 App 无“显示”菜单时才在“窗口”菜单中包括此项目。在这种情况下,请继续提供单独的“最小化”和“缩放”菜单项。 |
| 前置全部窗口 | 将 App 的所有打开窗口调到前面,同时保持其各自在屏幕上的位置、大小和层叠顺序。(在程序坞中点按该 App 图标也具有相同的效果。)按下 Option 键可使此项目更改为“排在前面”,该项目可使用整齐平铺的排列方式将 App 的窗口调到前面。 | |
| 已打开的 App 特定窗口的名称 | 将所选窗口调到前面。 | 按字母顺序列出当前打开的窗口以便于浏览。避免列出面板或其他模态视图。 |
10、“帮助”菜单
“帮助”菜单位于菜单栏的后端,提供对 App 帮助文稿的访问。当你为此文稿使用 Help Book 格式时,macOS 会自动在“帮助”菜单顶部包括一个搜索栏。
| 菜单项 | 操作 | 指南 |
|---|---|---|
| 将 App 名称的使用反馈发送给 Apple | 打开“反馈助理”,用户可以在其中提供反馈。 | |
| App 名称帮助 | 在内建的“帮助显示程序”中打开内容(使用 Help Book 格式时)。 | |
| 附加项目 | 在主要帮助文稿和附加项目之间使用分隔符,附加项目可能包括注册信息或发布说明。尽量减少“帮助”菜单中所列项目的总数,以避免用户在需要帮助时面临太多选择而不知所措。或者,还可以考虑从帮助文稿内链接到附加项目。 |
有关指南,请参阅提供帮助;有关开发者指南,请参阅 NSHelpManager。
11、动态菜单项
在极少数情况下,呈现动态菜单项是合理的,此类菜单项会在用户按下修饰键(Control、Option、Shift 或 Command 键)并进行选取时更改其行为。例如,当用户按下 Option 键时,“窗口”菜单中的最小化项会更改为全部最小化。
避免将动态菜单项作为完成任务的唯一方式。动态菜单项默认会隐藏,因此最适合用于提供高级操作的快捷方式,用户也可通过其他方式完成此类操作。例如,如果用户未发现“窗口”菜单中的全部最小化动态菜单项,仍可以最小化每个打开的窗口。
将动态菜单项主要用在菜单栏菜单中。将动态菜单项添加到关联菜单或程序坞菜单会使用户更难发现该项目。
对于显示动态菜单项,请仅要求一个修饰键。在打开菜单并选取菜单项的同时按下多个键除了会降低该动态行为的可发现性,还可能会让人在操作上感到别扭。有关开发者指南,请参阅 isAlternate。
- 提示:macOS 会自动将菜单宽度设定至可容纳最宽项目,包括动态菜单项。
12、平台考量因素
在 iOS、Apple tvOS、visionOS 或 watchOS 中不受支持。
iPadOS
菜单栏会显示 App 或游戏的顶层菜单,包括系统提供的菜单以及任何你选择添加的自定义菜单。用户将指针移至屏幕顶部边缘或者从屏幕顶部边缘向下轻扫来显示菜单栏。可见时,菜单栏会在屏幕顶部边缘占据与状态栏相同的垂直空间。
与 macOS 菜单栏一样,iPadOS 菜单栏为用户提供了了解 App 功能、查找所需命令以及探索键盘快捷键的熟悉方式。 虽然各方面都很相似,但各平台菜单栏之间有几个关键的区别。
| iPadOS | macOS | |
|---|---|---|
| 菜单栏可见性 | 不显示时隐藏 | 默认可见 |
| 水平对齐 | 居中 | 前端 |
| 菜单栏附加项 | 不可用 | 系统默认和自定义 |
| 窗口控制 | App 全屏幕显示时在菜单栏中 | 永远不在菜单栏中 |
| 苹果菜单 | 不可用 | 始终可用 |
| App 菜单 | “关于”、“服务”和 App 可见性相关项目不可用 | 始终可用 |
由于全屏幕运行 App 时菜单栏通常会隐藏,因此确保用户可以通过 App 用户界面来访问其所有功能。 尤其是应始终提供其他方式来完成分配给动态菜单项的任务,因为这些菜单项仅当硬件键盘连接时才可用。避免将其他位置不适用的功能通通放在菜单栏中。
保留 App 名称 >“设置”菜单项用于在 iPadOS 设置中打开 App 页面。如果 App 包括其自身的内部偏好设置区域,请将其关联至同组中“设置”下方的单独菜单项。将任何其他 App 级自定义配置选项也放入此部分。
对于通过标签页样式导览的 App,考虑在“显示”菜单中将每个标签页添加为菜单项。由于每个标签页均为 App 的不同视图,因此“显示”菜单是提供标签页附加导览方式的合适之处。如果这样做,请考虑为每个标签页分配键绑定,使导览更为方便。
考虑将菜单项分组至子菜单以节省垂直空间。iPad 上的菜单项行比 Mac 上使用的空间更多,使其更易轻点。正因如此,以及由于部分 iPad 的屏幕尺寸较小,更多地将相关项目分组至子菜单而不是 Mac 上的菜单栏会很有用。
macOS
macOS 中的菜单栏包括苹果菜单,它始终为菜单栏前端的第一项。苹果菜单包括始终可用的系统定义菜单项,不可修改或移除。若空间允许,系统还可在菜单栏后端显示菜单栏附加项。有关指南,请参阅菜单栏附加项。
在菜单栏空间受限时,系统会优先显示菜单和必要的菜单栏附加项。为了确保菜单的持续可读性,系统可能会减少标题之间的空间,并在必要时会进行截断。
当用户进入全屏幕模式时,菜单栏通常会隐藏,直到他们将指针移到屏幕顶部才会显示。有关指南,请参阅全屏显示。
菜单栏附加项
当 App 运行时,菜单栏附加项会使用菜单栏中出现的图标来呈现 App 特定功能,即使该 App 并不在最前面。菜单栏附加项位于菜单栏上远离 App 菜单的一侧。有关开发者指南,请参阅 MenuBarExtra。
必要时,系统会隐藏菜单栏附加项来为 App 菜单腾出空间。同理,如果存在太多菜单栏附加项,系统也可能会隐藏一些以免挤到 App 菜单。

考虑使用符号来代表菜单栏附加项。你可以创建图标,还可以选取一个 SF 符号,直接照搬使用或根据需要进行自定义。界面图标和符号均使用黑色和明显的颜色来定义其形状,系统可对每个图像中的黑色区域应用其他颜色,使其在深色和浅色菜单栏中以及在菜单栏附加项被选中时都看起来美观。菜单栏的高度为 24 点。
在用户点按菜单栏附加项时显示菜单,而非弹出窗口。除非想呈现的 App 功能对菜单而言过于复杂,否则避免以弹出窗口进行展示。
让用户(而非你的 App)决定是否在菜单栏中添加菜单栏附加项。通常情况下,用户会通过更改 App 设置窗口中的设置来将菜单栏附加项添加到菜单栏。然而,为了确保可发现性,请考虑在设置过程中为用户提供这样做的选项。
避免依赖菜单栏附加项。系统会经常隐藏和显示菜单栏附加项,因此无法确定用户选择了要显示哪些其他菜单栏附加项,也无法预测菜单栏附加项的位置。
同时考虑通过其他方式呈现 App 特定功能。例如,你可以提供程序坞菜单,使其在用户按住 Control 键点按 App 的程序坞图标时出现。用户可隐藏或选择不使用你的菜单栏附加项,但程序坞菜单在你的 App 运行时始终可用。








