Full-Screen Mode全屏模式
全屏模式下的应用程序窗口提供了无干扰的工作环境。
工具栏,菜单和其他标准控件通常仅在用户调用它们时被隐藏和显示,例如通过将指针移动到屏幕顶部。
一些应用程序甚至隐藏必要的控件,以增加对内容的关注。 控件被隐藏,例如,在QuickTime Player中播放电影或Photos中的幻灯片时。
1.仅在有意义的情况下启用全屏幕窗口。
当用户想要沉浸在任务中时,全屏模式很有用。 然而,并不是所有的应用程序都需要这种沉浸。
例如,一些实用程序应用程序,如计算器,与其他应用程序一起放置在屏幕上的较小的窗口更好。 将iOS应用移植到macOS时,不要以为该应用程序应该支持macOS中的全屏模式。
2.当完成任务时,保持工具栏可见; 当焦点在内容时隐藏它。
可以设置全屏窗口以一直显示工具栏,或仅当用户将指针移动到屏幕顶部时。
例如,日历会始终显示工具栏,可以快速访问必要的导航和日程管理控制。 另一方面,预览隐藏工具栏,因此用户可以专注于阅读或查看内容。
3.保留访问基本功能。 确保所有必需工具在全屏环境中仍然可用。 用户应该能够完成任务而不退出全屏模式。
4.配置辅助窗口以用于全屏模式。 全屏辅助窗口必须正确配置,以便可以在全屏内容之上显示。 有关开发人员的指导,请参阅NSWindowCollectionBehaviorFullScreenAuxiliary。
5.设计与外部文件的高效交互。 用户不需要退出全屏模式来打开文件,导入图像,保存文件或执行其他文件系统交互。 考虑如何在全屏环境中使这些功能可用。 例如,如果您需要提供对图像的访问,则可以实现内置的图像浏览器。
6.利用额外的屏幕空间,但保持您的界面转换顺利。 全屏幕时,大多数窗口的宽度和高度都会增长。 如果适当,您可以巧妙地调整界面的比例,使Windows更适合于空间,并提升执行任务或查看内容所必需的区域。 只需确保转换不会刺激,并且您的界面仍然可识别。 例如,当在Photo Booth进入全屏幕模式时,用户永远不会在观看区域看不到自己。
7.尊重进入任务控制的手势。 标准的任务控制手势应该始终工作。 即使您的应用程序是唯一的重点,用户应该能够调用任务控制,以便在其打开的窗口,全屏应用程序,桌面,空格和仪表板之间快速预览和导航。 这个规则也适用于游戏。
8.当用户切换到您的应用程序时适当回应。 当用户在切换之后返回到您的应用程序时,应该能够恢复他们离开的位置。 例如,当用户离开应用程序时,游戏或照片幻灯片应自动暂停。
9.让用户选择何时退出全屏模式。 当用户切换到另一个应用程序或当一个活动(如播放电影或游戏)完成时,避免自动退出全屏模式。
10.一般来说,让用户露出Dock。 当您的应用程序处于全屏模式时,保持对Dock的访问非常重要,因此用户可以快速打开应用程序和其他Dock项目。 一个例外是在沉浸式游戏中,屏幕的边缘是体验的一部分。
Loarding 加载
人们想要一个按照命令行事的应用程序,并告诉他们处理需要多长时间。 如果您的应用程序呈现空白或静态内容,并且不提供反馈,人们可能认为您的应用程序被冻结,导致混乱和沮丧。
1.提供用户交互的即时确认。用户期望每次与您的应用互动时都会收到一些类型的反馈。
例如,在整个系统中,当按钮被点击时,按钮可以视觉响应,并且当指针在屏幕上不同的控件和区域上移动时,指针会改变。您的应用程式越快提供使用者互动的反馈意见,显示效果就越好。
2.帮助人们衡量一个过程需要多长时间才能完成。用户并不总是需要准确地知道任务需要多长时间,但重要的是给他们一个估计。
至少显示一个表示正在发生的事情的活动旋转器。理想情况下,显示一个明确的进度指标和补充描述性文本。
例如,Finder将进度条与说明文本相结合,以显示复制操作需要多长时间。
3.尽快显示内容。如果在看到结果之前让人们等待内容加载,他们可能会将内容的缺乏解释为迟钝。
而是显示内容不可用的占位符文本,图形或动画,并在内容加载时替换这些元素。只要有可能,在后台预加载即将到来的内容,例如在播放动画或进行用户交互时。
4.有关其他指导,请参阅进度指标并提供用户反馈。
Modality 模态
模态通过输入无干扰的上下文来创建焦点,防止人们在完成任务或关闭消息或视图之前执行其他操作。 警报和工作表是模式视图的示例,在用户可以继续执行任务之前必须先关闭模式视图。 在某些模式上下文中,与当前任务无关的功能和交互可能会被暂时禁用。 例如,预览中的草图模式会阻止某些用户操作(如选择或添加文本),直到用户退出该模式。
1.最小化使用模式。一般来说,人们喜欢以非线性方式与应用进行互动。
考虑创建一个模态上下文,只有当一个任务需要完成或放弃才能继续使用该应用程序,当一个任务要求模态(如在图形应用程序中使用图形或选择工具)保存重要数据。
2.范围适用范围一般来说,选择最有限制的模式。
例如,如果任务必须在文档窗口中执行某些操作之前完成,请考虑使用工作表,该工作表会禁用文档中的交互,但让用户继续使用应用程序的其他部分。有关相关指导,请参阅表格。
3.提供一种明显而安全的方式来退出模式语境。人们不应该被困在模式上。
例如,您可以启用模式弹出窗口,当用户单击屏幕上的另一个区域时,它将自动关闭。一般来说,最好保存用户的工作,以防他们退出模式而无意义。当用户离开模式背景时,用户应该总是知道他们的行动结果。
4.保持模态任务简单,简短和狭义。人们不应该将您的应用视为一系列不相交的任务或过渡,导致混乱的工作流程。
如果模态任务太复杂,用户可以忽略他们进入模态环境时暂停的任务。尽可能地保留小型独立任务的模式。
5.清楚地显示当前模式。
如果您的应用程序包含不同的模式,可以让人们轻松地了解他们所处的模式。
例如,在草图模式下,“预览”会显示不同的指针样式,并在编辑工具栏中突出显示模式的图标。
6.保留警报,提供基本和理想的可操作信息。警报中断了经验,并要求采取行动解雇,所以对于人们来说重要的是认为入侵是有必要的。
如果必须显示警报,请务必清楚描述问题,解释为什么发生这种情况,并提供进行的选项,包括可能存在的任何解决方法。有关其他指导,请参阅警报。
7.尊重通知偏好。在“系统偏好设置”中,用户可以指定他们希望从应用程序接收通知。遵守这些偏好,使用户不会完全关闭您的应用的通知。
8.不要在popover上方显示模态视图。除了警报之外,在popover上也不会出现任何内容。在少数情况下,当您需要在弹出窗口中执行操作后显示模态视图,请在显示模态视图之前关闭该弹出窗口。
Onboarding 新手上路
启动时间是您首次搭载新用户并重新连接返回的用户。设计快速,有趣和教育的发射体验。
1.避免向前询问设置信息。人们期望应用程序正常工作。为大多数设计您的应用程序,并让少数需要不同配置的人调整偏好以满足他们的需求。在最大程度上,从系统和默认值导出设置信息,或通过像iCloud这样的同步服务。如果您必须要求设置信息,请等到实际需要,提示一次,然后让用户在应用的偏好设置中进行调整。
2.建立适用于大多数人的默认配置。如果您很好地衡量观众的需求,则很少需要对默认设置进行调整。
3.快速行动起来避免显示初始屏幕和说明,使其需要更长的时间来实现内容并开始使用您的应用程序。相反,让人们直接潜水。如果您的应用程序需要教程或简介序列,请提供一种方式来跳过它们,而不会将其显示给返回的用户。
4.预计需要帮助。主动寻找人们被困的时代。例如,一个游戏可以随时显示有用的提示,当暂停或一个角色不推进。让用户重新访问教程,以防他们第一次错过任何事情。
5.坚持教程中的要点。为初学者提供指导是很好的,但教育不能代替伟大的应用程序设计。首先,让您的应用直观。如果需要太多的指导,请重新审视您的应用程序的设计。
6.使学习乐趣和可发现。通过阅读来阅读指导书,学习更有趣和有效。使用动画和互动教学逐渐和上下文。避免显示交互式的截图。
7.提供综合帮助。将帮助标签添加到特定于应用程序的控件,并通过帮助查看器考虑提供面向任务的文档有关指导,请参阅帮助。
8.自动保存用户的工作。人们期望他们的内容能够不间断地得到保存,而不需要干预如果您的应用程序是基于文档的,请启用自动保存。请参阅自动保存。
9.始终准备停止并重启。大多数人不区分关闭应用程序的主窗口并退出应用程序。如果您的应用程序有单个窗口,则在用户关闭窗口时自动退出。
Preferences 优先
首选项是您的应用程序从会话到会话记忆的用户定义设置。用户调整首选项以自定义应用程序的外观和行为。例如,Finder包括喜欢自定义桌面和侧边栏的外观,显示文件扩展名,以及在清空垃圾箱时禁用警告。
1.提供有限的一些有用的偏好。避免使用偏好设置来配置应用的各个方面。相反,要果断,并专注于人们实际想要修改的特征和外观属性。
2.提供特定于应用的首选项。用户希望全局管理某些设置,例如边栏图标的大小,滚动行为和自动保存行为。这些设置已经可以在系统偏好设置中配置。为确保一致性和避免混淆,您的应用不应包含使您的应用程序的行为与系统中其他所有应用程序的行为不同的首选项。
3.预留偏好设置很少更改。如果有人可能希望在每次打开应用程序或每次执行某项任务时更改设置,请考虑将其暴露在浮动面板中,用户可以打开并保持屏幕上的快速访问。
4.提供菜单项,而不是工具栏项,用于访问您的应用程序的首选项。工具栏仅供常用项目使用。用户希望在文件菜单中的应用程序菜单和文档级首选项中查找应用程序级别的首选项。也可以使用标准的命令 - 逗号键盘快捷方式访问应用程序级首选项。有关相关指导,请参阅工具栏和菜单栏菜单。
5.有关开发人员指南,请参阅“基础知识”的“首选项和设置编程指南”和“首选项编程主题
6.偏好窗口
偏好设置窗口是用于调整应用程序偏好设置的无模式对话框。通常,首选项窗口包含一个工具栏,其中包括用于在相关设置组之间切换的按钮,这些组在工具栏下方的视图中显示。这些分组称为偏好窗格。
7.立即应用偏好更改。用户期望偏好更改会在更改后立即生效。
8.在首选项窗口中禁用最小化和缩放按钮。偏好设置窗口用于偶尔调整应用程序的行为方式,所以不需要调整大小的首选项窗口或长时间保持打开状态。
9.如果您的首选项窗口包含工具栏,请实现不可隐藏的不可自定义工具栏。首选项窗口工具栏中的项目可以在始终可用的不同设置组之间进行导航。
10.将选定的外观应用于当前可见的首选项窗格的工具栏按钮。重要的是指出哪个工具栏按钮处于活动状态。
11.更新首选项窗口的标题以反映当前可见的首选项窗格。例如,如果您的首选项窗口包含“常规”首选项窗格,则该窗格处于活动状态时,窗口的标题应为“常规”。如果您的窗口不包含多个首选项窗格,则其标题应为应用程序名称首选项。
12.恢复上次查看的首选项窗格。如果用户切换首选项窗格,则应用程序应记住此更改,并在下次用户打开首选项窗口时立即显示相同的窗格。
Restoring State恢复状态
当他们重新启动您的应用程序时,人们不需要回溯步骤来达到他们以前的位置。
1.保存并恢复您的应用程序的状态,以便人们可以继续他们离开的地方。 例如,重新打开并恢复当用户退出您的应用程序,注销或重新启动时打开的任何文档和窗口的大小和位置。
2.按预期配置重新打开的窗口。 在大多数情况下,人们希望窗口重新打开上次配置的方式。 例如,通常应该恢复边栏的可视性和拆分视图的大小。 这个规则的一些例外是:
3.具有由多个子视图组成的窗格或侧边栏的应用程序(如Numbers中的“排序和过滤器”窗格)将在窗口还原时恢复为其默认视图。
类似于系统偏好设置的应用程序,其主视图严格作为其他视图的启动器,应始终向主视图打开。
Security安全
人们欣赏macOS的安全性,并期望他们的应用程序同样安全。当您利用系统提供的安全技术时,您可以在本地安全地存储信息,授权用户进行特定操作,并通过网络传输信息。
1.避免仅依靠密码进行身份验证。利用TouchID等其他技术,使用户可以使用指纹进行身份验证。
2.将敏感信息存储在钥匙扣中。钥匙串在处理用户的私人信息时提供安全,可预测的用户体验。
3.不要将密码或其他安全内容存储在纯文本文件中。即使您使用文件权限限制访问权限,密钥信息的安全性也更为安全。
4.明智地做出假设。例如,不要假设只有一个用户登录。由于快速的用户切换,多个用户可能在同一个系统上处于活动状态。
5.避免发明自定义认证方案。如果您的应用需要身份验证,请使用系统提供的授权API。
6.要求代码,需要特权访问到一个单独的进程。保理代码将安全代码与非安全代码隔离开来,使得更容易验证是否发生无论是故意还是无意损坏的流氓操作。
7.警惕加载和特权代码。特别是避免加载特权代码插件,这些插件采用其父进程的特权。避免调用潜在的危险功能,如系统或popen从加载或特权代码。
Ensuring App Integrity确保应用程序的完整性
用户的“安全和隐私”设置适用于下载的应用程序的使用。 从Mac App Store下载的应用程序始终被批准使用。 用户可以选择启用由已知开发人员创建的应用程序的使用。
从Mac App Store销售您的应用程序。 用户知道,Mac App Store中的每个应用程序都已被Apple审查,并没有被篡改。
如果您选择在Mac App Store之外分发您的应用程序,请使用有效的开发人员ID对您的应用进行签名。 这标识你是一个苹果开发人员,并确保用户可以打开你的应用程序,如果他们选择这样做。 有关开发人员的指导,
启用应用程序沙箱以帮助保护用户数据。 沙盒可让您的应用程序访问所需的内容,同时限制对其他系统资源和用户数据的访问。 沙盒还可以保护您的应用免受恶意软件的侵扰。 提交到Mac App Store的所有应用都需要沙盒。 有关开发人员的指导,