Skip to content

Latest commit

 

History

History
90 lines (48 loc) · 11.9 KB

013_OSX.md

File metadata and controls

90 lines (48 loc) · 11.9 KB

集成到 OS X 系统

正确使用系统 UI

OS X 提供了很多系统 UI 元素,像控件,菜单和对话框等等。多用这些 UI 元素有几个好处:

  • 用户对系统自带的 UI 元素都比较熟悉,可以让你的应用很容易上手。
  • 多用系统 UI 可以让你的应用和整个系统保持统一的体验。
  • 系统 UI 对半透明的 Vibrancy 效果做了优化,可以获得更好的显示效果。
  • 系统更新的时候,你的界面会自动跟着更新。

但是这些好处的前提是你要正确地使用这些系统 UI,那么怎么用才叫正确呢?请看以下几点:

不要给系统 UI 元素添加新的行为。 根据本文档的说明,规范地使用系统 UI 是非常重要的,如果你用错了这些系统 UI,应用的行为就会变得很奇怪,无法预测,让用户觉得你的应用很难用。

一般情况下,不要模仿创建一个系统 UI 元素。 如果你的自定义 UI 跟系统 UI 长得一样,用户就会把这两者搞混,会觉得为什么这个控件长得跟系统的一样,但是行为又完全不同。同理,如果你的自定义 UI 的行为跟系统 UI 一样,用户就会觉得这两个东西有什么不同,为什么长的不一样?

所以,如果你需要一种新的 UI 行为,那就设计一个全新的 UI 元素, 而不是重新定义一个已经存在的 UI 元素的行为。但是要设计一个全新的 UI 元素,前提是这种设计有系统 UI 无法取代的优势,否则对用户来说只是增加学习成本,浪费时间罢了。

不要直接复制别的平台的 UI 元素。 用户不一定熟悉其他的平台,你不能假设所有用户都明白其他平台的一个控件是怎么用的。最好的做法是做一个自定义控件来实现这些功能,同时要保证这个控件的样式、行为跟 OS X 系统风格保持一致。

重要提示
自定义 UI 元素不会随着系统升级而升级,所以如果你用了自定义控件,你就有责任在系统升级的时候更新你的 UI 元素。

你可能会担心用系统控件会让你的应用看上去平淡无奇以致淹没在 OS X 应用的汪洋大海之中,但事实上多用系统控件反而可以让用户专注于你的内容,用人们真正关注的东西来打动用户。而且系统控件可以提供给用户稳定一致的体验,让应用变得更容易使用。

让你的应用触达更多的用户

为了让你的应用面向的市场更加广阔,在设计的初期就应该考虑辅助功能和国际化设计,早点动手要好过把应用做完了再从头改一遍。

OS X 自带了很多辅助功能,比如语音辅助 VoiceOver,放大模式 zoom 以及全键盘操作模式 keyboard access mode。VoiceOver 会用声音告诉有视力障碍的用户当前界面都有哪些东西以外,还会给可能在他旁边的视力完好的人高亮显示当前选中的元素。如果你的应用接入了这些辅助功能,就算是有障碍的用户也可以轻松使用。关于如何支持辅助功能,请参考语音辅助 VoiceOver and Accessiblity一章。

提示
使用系统定义的颜色可以让你的应用在用户调整系统对比度和透明的时候相应地作出调整。(你可以在代码里面使用 NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification 来接收通知。)

使用系统提供的国际化配置来实现应用的本地化。 国际化配置可以把应用的文字资源和图片资源从代码中抽离出来,一旦这些资源被抽离,根据不同的文化来做本地化就变得很简单了。更多关于国际化,本地化的细节,可以参考 国际化与本地化指南 Internationalization and Localization Guide

把看得到的 UI 控件都做本地化。 就是说,你要确保你的 UI 界面上的文字都可以被翻译成不同的语言以适应不同的国家。如果你用了自动布局(Auto Layout)功能,你可以定义好控件和说明文字之间的关系,然后系统就会自动根据文字的长度把控件拉伸。更多关于自动布局的内容,可以参考 Cocoa Auto Layout 和 [Mac Technology Overview]。

**要留意图形和符号中可能潜在的意义,**确保你所用的这些图形和符号都能表意清晰,不会无意中冒犯到用户,必要的时候还要对这些资源做本地化修改。比如你可能会用一些代表美国节日的图片来表示季节——圣诞树,南瓜和烟花之类的——那你得对那些不熟悉美国节日的人做好本地化,把这些图片换成他们所熟悉的形象。

要尊重用户的区域设置。 在系统的语言与文本设置项里面,有很多关于日期,时间和数字(比如金钱数目和计量单位)显示格式的设置,系统也提供了相关的 API 来做这些内容的格式化。所以你最好不要自己做格式化。

支持不同的地址格式。 不要假设所有的地址都跟当前用户地址的格式一样,比如系统的联系人应用就可以根据不同的地区设置不同的地址格式。所以如果你支持展示系统联系人应用里面的数据,请注意一定要根据不同的地址格式做处理。

尽量使用容易翻译的文字。 翻译是一件复杂而精巧的事情(译者泪目 T^T),所以要尽量避免使用俗语成句和不规范的语法,对于菜单,对话框和帮助文本的遣词造句要思之再三。要知道美国英语被翻译成其他语言后长度可能会增加一半(译者注:中文翻译成其他语言通常会长很多很多,所以做国际化的时候要留意自动缩放控件长度,同时控制好界面布局空间)。

在文字资源文件里面要尽可能使用完整的句子。 分开几个部分拼凑成一个句子的文字,翻译后很可能就有语法问题了,比如英文和中文的语序可能就很不一样,还用原来的顺序来展示就前言不搭后语了。关于多语言的处理,请参考国际化指南部分。

做界面布局的时候要留意文字的长度,位置和阅读方向。 不同语言文字长度不同,阅读方向也有可能不同,很多中东地区的国家都习惯从右往左的阅读方向。界面上文本的位置和对齐方式也要保持灵活可变。

尽可能根据内容的逻辑走向来做界面布局。 比如对于习惯从左往右阅读的人来说,最重要的内容通常放在界面的左上方,反之则是右上方。界面里的每个元素如果都能够面向逻辑来做布局,而不是面向视觉和位置来做定义,扩展这个应用的市场就会容易得多。

向用户提供 OS X 式的体验

用户从来都不是在一个孤立的环境下使用某个应用,用户体验会受到来自系统特性和用户设置的影响。比如有些用户可能更想在你做的编辑器应用里使用全屏模式,然后切换到别的桌面用其他的应用来完成图片编辑的任务,有些用户可能想直接在你的应用里面调起一个扩展来完成图片编辑任务,甚至有障碍的用户会通过语音辅助或者其他辅助设备来使用你的应用。

所以最好的应用应该能够是集成到 OS X 系统里面的,集成度越高,用户越觉得这个应用跟系统是一体的。关于怎么利用系统提供的各个特性和技术,可以参考应用扩展 App ExtensionsiCloud游戏中心 Game Center通知中心 Notification Center等章节。

但是至少,能符合用户预期的应用应该要做到以下几点:

  • 拥抱 Vibrancy 效果。 Vibrancy 效果是一种通过提取背景的颜色做复杂的计算得出的模糊、半透明的效果,这种效果被广泛应用在通知中心,窗口的侧边栏,菜单和悬浮窗等各个地方。标准的 AppKit UI 都对 Vibrancy 效果做了优化。

你可以使用 NSVisualEffectView 来实现 Vibrancy 效果。

  • 尊重系统的全局菜单,不要把菜单放到窗口里面。 OS X 系统在屏幕的顶部有一个全局菜单,所有的应用都在这里显示菜单。关于更多菜单栏的内容,请参见菜单栏菜单 Menu Bar Menus

  • 集成到 Spotlight。 Spotlight 可以让用户方便地找到所有的东西。为了让用户搜得到应用创建的自定义文件,你需要支持导入数据到 Spotilight。更多关于 Spotlight 的内容,请参考Spotlight

  • 利用 Dock 来展示实用信息。 用户和系统都希望 Dock 的表现能够被他们的设置所控制,所以至少你的应用不应该和 Dock 的位置产生冲突。关于 Dock 的更多内容,请参见Dock一章。

  • 使用高质量的图标。 OS X 最大的魅力之一是系统中各种各样高分辨率、精致漂亮的图标。关于怎么设计这些图标,可以参考设计应用图标 Design App Icons工具栏选项 Toolbar items侧边栏图标 Sidebar Icons

尊重 OS X 的多层窗口设计。 确保使用了正确的类型来显示你的窗口,规范窗口的行为。(详见关于窗口 About Windos

**少用模态,**避免强迫用户必须完成当前任务之后才能做其他的事情。这种情况下使用 Sheet 和悬浮层会让用户觉得更自由一些(关于 Sheet 可以参考使用基于文档的模态对话框 Use Document-Modal Dialogs (Sheets)悬浮层 Popover)。如果一定要用模态,就得清晰地指出当前的状态,确保用户可以很容易地进入和退出这种模式。

把应用创建的文件存在合适的地方。 OS X 定义了几个特殊的位置用来存放应用相关的文件,比如应用的配置文件和用户创建的文件。不要把应用的文件随便乱放,这样很容易跟其他文件混杂在一起,用户很难找到这些文件。(译者注:比如下载的文件就进下载目录,用户自己创建的文件就默认存文档目录。)关于文件系统的更多内容,可以参考文件系统概览 File System Overview 一文。

要支持系统的多用户切换机制。 OS X 是允许多个用户同时使用的,如果用户使用快速切换功能登录了一个新帐号,那么这时候前一个用户的帐号其实还是在后台跑的。所以在这种多用户环境下,要确保你的设计不依赖与全局独占资源,也不要假设一个用户服务只会有一个实例。关于快速切换的更多信息,可以参考多用户环境编程 Multiple User Environment Programming Topics

支持手势。 OS X 系统通过多点触摸手势可以让用户很方便地打开通知中心,切换桌面,打开 LaunchPad 等等。更多关于支持手势的文档,可以参考手势可以增强用户体验 Gestures Can Enhance the User Experience

支持配置文件显示名。 OS X 可以配置文件、文件夹和应用在不同情况下显示不同的名字(比如中文下载目录是“下载”,英文就是”Downloads”),但是你的配置要根据用户在系统的设置项来做。关于文件扩展名的相关信息,可以看协作性 Interoperability一章。

不要覆盖系统保留的快捷键,同时尽量不要修改 Apple 推荐的快捷键设置。 用户其实一般都分不清系统快捷键和苹果推荐的快捷键有什么区别,不过他们认为这两种快捷键都应该和正在用的应用无关。关于支持键盘操作的更多信息,可以看键盘 Keyboard一章。

支持拖拽手势。 拖拽手势在 OS X 上是被普遍采用的一种交互方式,这也是 OS X 平台最有名的特性之一。尽管拖拽手势能实现的功能也要确保能够通过键盘实现,但是支持拖拽这种更直接更自然的操作还是非常有必要的。详情可参见拖拽手势 Drag and Drop

支持剪贴板。 剪贴板可以让用户实现在多个应用间交换数据,要确保你的应用支持剪切,复制和粘贴这些功能。更多关于剪贴板的操作信息,可以参见编辑菜单 The Edit Menu格式菜单 The Format Menu