1、介绍iPhone 和 iPod touch 融合了革命性的多点触摸技术和多种强大功能,如电子邮件,即时通信,全功能网页浏览器和 iPod 等,另外 iPhone 还具有移动电话的功能。iPhone OS 是在 iPhone 和 iPod touch 上运行的系统软件。随着 iPhone SDK 的发布,这些强大的功能为开发人员提供了众多的开发可能。开发者不但可以创建在 iPhone OS 设备上使用的网页内容,还可以使用 iPhone SDK 来创建在设备中储存和使用的本地程序。本文档可以帮助您了解可以为 iPhone OS 创建何种类型的应用程序以及优秀iPhone 程序基础的人机界面设计准
2、则。在本文档中,您可以了解到如何在设计最佳用户界面和用户体验时遵循这些原则。不论您是经验丰富的计算机程序开发员,或是一位熟练的移动设备程序开发员,还是程序开发领域的新手,本文档中都能够帮助您开发出用户需要的 iPhone 程序。注意:本文档简要地介绍了如何为 iPhone OS 设备进行基于网页的开发。更多详细信息,请参考 iPhone Web 应用程序人机界面指南 。本文档的组织结构iPhone 人机界面指南 分为两部分,每一部分都包含几个章节: 第一部分 “设计您的 iPhone 应用程序”描述了 iPhone OS 环境和您可以为它开发的软件类型。它也涵盖了基本的人机界面设计原则,并描述
3、了如何在您的 iPhone 应用程序中应用这些原则。 第二部分 “设计您的 iPhone 应用程序的用户界面”深入讨论了那些用于创建 iPhone 应用程序的用户界面的元素。它描述了各种可用的视图和控件并提供了如何有效使用它们的说明。参考如果您需要了解编写 iPhone 应用程序的更多信息,请参考: iPhone 应用程序编程指南如果您需要了解为 iPhone OS 设备设计 Web 应用程序的更多信息,请参考: iPhone Web 应用程序人机界面指南设计您的 iPhone 应用程序本部分描述了设计和开发 iPhone OS 应用程序的思想方法。通过阅读本部分的章节,您可以了解 iPhon
4、e OS 上不同的程序类型以及您将在工作中用到的设计准则。您也可以了解如何在您的应用程序中应用这些准则,使您的程序具有直观而又引人注目的用户界面。iPhone OS 平台:丰富的可能性iPhone OS 支持很多类型的软件,从基于 Safari 的 Web 应用,到 iPhone 本地应用程序,都可以运行在 iPhone OS 设备上。本章概要地介绍了为 iPhone OS设备创建不同类型软件的解决方案。如果您刚接触该平台,您应先阅读第一节中 iPhone OS 设备和其他计算机的差异总结,“牢记平台间的差异”。虽然此节的信息并不全面,但已经包含了您在设计 iPhone 应用程序时需要意识到的
5、问题。接下来,本章阐述了设计不同应用程序风格和特点时的思维方式,以帮助您设计 iPhone 应用程序。本章也阐述了如何将现有的 Mac OS X 应用程序转换为iPhone OS 版本的应用程序。牢记平台间的差异iPhone OS 设备不同于台式机或笔记本电脑,iPhone 应用程序也与桌面应用程序不同。虽然这些似乎只是常识性陈述,但是您在为这些设备开发软件时意识到这些差异还是非常重要的。为 iPhone OS 设备开发软件需要的思维方式可能是也可能不是您所习惯的。尤其是在您的经验主要是开发桌面应用程序的情况下,您应该了解为移动平台设计软件和为台式机设计软件的差异。本小节总结了这些具体的差异。
6、这些差异对于您的设计选择具有潜在的影响。有关如何处理这些差异以及 iPhone 应用程序开发过程中的其他问题的具体信息,请参考 iPhone 应用程序编程指南。紧凑的屏幕尺寸iPhone OS 设备具有高分辨率的小型屏幕,适合用户放入口袋且具有强大的显示功能。然而这个对用户来说巨大的优势可能成为您的挑战。因为这意味着您必须设计一个可能与您的设计习惯差异较大的用户界面。iPhone OS 设备屏幕的尺寸是 480 x 320。考虑到这一点,用户界面应该主要关注必不可少的部分。您没有空间来放置那些非必要的设计元素。另外,拥挤的用户界面将降低程序的吸引力并会提高使用的难度。内存是有限的内存是 iPh
7、one OS 的重要资源,所以在应用程序中管理内存至关重要。因为iPhone OS 的虚拟内存模型不包括磁盘交换空间,所以您必须注意避免分配的内存超出设备的可用内存。发生内存过低的情况时,iPhone OS 将警告运行中的应用程序,若问题仍然存在,应用程序可能被终止。确保您的应用程序对于内存使用警告作出回应,并及时清理内存。在您设计应用程序时,可以通过避免内存泄漏,减小资源文件大小以及延迟加载资源的方式,尽力地降低程序的内存占用。关于如何在 iPhone 应用程序中合理处理内存的的更多信息,请参考 iPhone 应用程序编程指南 。每次只能显示一个窗口iPhone OS 环境和计算机环境的最大
8、区别之一就是窗口模式。除了一些模式视图外,在 iPhone OS 设备上,用户每次在屏幕上只能看到应用程序的单个窗口。iPhone 应用程序可以包含必要数量的不同窗口,但是用户不能同时访问,只能顺序访问和查看。如果应用程序的台式机版本需要用户同时看到几个窗口,那么您需要考虑是否存在其他的方式让用户能够在单个窗口或一系列顺序查看的窗口中完成同样的任务。如果不存在这种方式,您的 iPhone 应用程序不应考虑复制计算机版本程序的完整功能,而应改为实现计算机版本的单个子任务。每次只能运行一个程序同一时刻只有一个 iPhone 应用程序可以运行,第三方应用程序不能在后台运行。这意味着当用户切换到另一个
9、应用程序,接电话或是查看邮件时,他们当前使用的应用程序将被关闭。重要的是,您应确保这一特点没有对用户产生负面影响。也就是说,在用户离开您的 iPhone 应用程序并在稍后返回时,用户应该不会感到比在计算机上的程序切换更加困难。保证用户享有良好的程序切换体验的最有效方法就是将您的应用程序的启动时间降到最低。关于如何尽可能地减少启动时间的更多信息,请参考 iPhone 应用程序编程指南 。一般说来,用户通过切换至设备上其他应用程序或服务的方式退出您的应用程序时,他们不会特地关闭您的应用程序。因此,不要期望用户显式地从菜单中选择退出或是点击关闭按钮。这意味着您的程序可能在没有太多通知的情况下退出,由
10、此您应尽可能迅速地保存用户所做的修改。这样就能在应用程序切换时形成快速而平稳的过渡,并且保证下一次您的应用程序启动时能够显示用户最近做的修改。简单程序模型的另一个重要方面是您处理程序特定配置的方式。在 iPhone OS设备上,用户在设置程序中设定配置。您的 iPhone 应用程序可以提供这种配置,但是这意味着当用户想在设置中访问这些配置时,他们必须退出您的程序。如果您根据标准指南提供用户仅需设定一次的设置,那么您的程序的用户体验就会比较流畅。简短的用户帮助移动用户在使用您的应用程序前没有时间通读大量的帮助内容。更重要的是,您也不想用宝贵的空间显示或存储帮助内容。iPhone OS 设备的设计
11、特点是易用,所以满足用户的期望并使您的应用程序用法清晰明确是十分关键的。您可以采取如下措施: 正确地使用标准控件。因为用户已经熟悉在内置应用程序中看到的标准控件,所以他们了解如何在您的应用程序中使用这些控件。 确保您的信息中呈现的路径具有逻辑性,让用户能够轻松作出预测。另外,确保提供标记,比如后退按钮,这样用户就可以知道他们的位置并且了解如何重复原来的步骤。您的选择是什么?在您决定如何将产品呈现给 iPhone OS 用户前,您需要了解您可以选择的范围。根据产品的实现细节和目标用户,某些类型的软件可能更符合您的需求。本节将为 iPhone OS 设备开发的软件根据实现方法分为三大类。粗略地说,
12、您可以创建: iPhone 应用程序,也就是您用 iPhone SDK 开发的,在 iPhone OS 设备上本地运行的程序。 仅在网页上显示的内容,包括 Web 应用等,也就是像内置 iPhone 应用程序一样运行的网站。 混合应用程序,在 Web 视图区域中提供网页内容的访问,但是也包含了一些 iPhone OS 用户界面元素。iPhone 应用程序iPhone 应用程序类似于 Phone OS 设备上的内置应用程序,因为它们驻留在设备本身并且利用了 iPhone OS 环境的特性。用户在他们的设备上安装iPhone 应用程序,并像使用内置应用程序一样使用这些程序,例如股票,地图,计算器和
13、邮件。iPhone 应用程序启动十分迅速且易于使用。不论应用程序的任务是发送邮件还是为用户提供娱乐,它都应具备快速响应以及简单的特点,另外还应有漂亮简洁的用户界面。仅在网页上显示的内容涉及到为 iPhone OS 用户提供仅在网页上显示的内容时,您有一些不同的选择: Web 应用提供了一个任务集中解决方案且遵从某种准则的网页被称为 Web 应用,因为它们的行为与 iPhone OS 内置的应用程序类似。Web 应用与所有仅在网页上显示的内容相同,都在 iPhone 中的 Safari 上运行;用户仅需跳转到 Web 应用的 URL,而不用在其设备上安装 Web 应用。 优化网页根据 iPhon
14、e 上的 Safari 特点进行显示和操作优化的网页(除了某些基于不支持的技术的元素,如插件,Flash 和 Java)。另外,优化网页的内容尺寸应适合设备的屏幕。常常将其设计为在 iPhone OS 设备上显示时进行检测,以对所提供的内容做相应调整。 兼容网页显示和操作与 iPhone 上的 Safari 兼容的网页(除了某些基于不支持的技术的元素,如插件,Flash 和 Java)。虽然兼容网页不会采取额外的措施来优化其在 iPhone OS 设备上的视觉体验,但是一般均能成功地在设备上进行显示。如果您已经拥有一个网站或 Web 应用,首先需要确保其能在 iPhone OS 设备上正常工作
15、。同时,您应考虑创建一个自定义图标,用户可以将该图标放在主屏幕上并使用网页剪辑功能。实际上,这样用户就能在他们的主屏幕上保留一个看起来像本地应用程序图标的,指向您网站的书签。了解有关创建自定义图标以及如何让 iPhone OS 设备上的网页内容具有良好视觉效果的更多信息,请参考 iPhone 人机界面指南之 Web 应用。混合应用程序在 iPhone OS 中您可以创建一个结合本地程序和网页功能的程序。混合应用程序是一个本地 iPhone 应用程序,它通过 Web 视图区域来展示其结构和功能,但是仍然包含标准的 iPhone OS 用户界面元素。混合应用程序让用户通过一个称为 Web 视图 (
16、如 “Web 视图”所述)的元素访问网页内容。确切地说,如何在您的应用程序中使用 Web 视图由您决定,但是应避免让用户觉得您的应用程序仅仅是一个小型的网页浏览器。混合应用程序应像一个本地 iPhone 应用程序一样运行;而不应凸显依赖网络资源这一事实。三种应用程序风格根据视觉和行为特征,数据模型以及用户体验,本文档定义了三种程序风格。在您深入阅读之前,需要强调的是,这些分类的命名和描述是为了帮助您清楚地确认您的设计方案,并不表示所有的 iPhone 应用程序都必须严格地遵循这些分类。描述这些风格是为了帮助您了解不同风格的应用程序具有不同的设计方案。注意:应用程序的风格并没有规定实现方法。虽然
17、本文档主要阐述本地的iPhone 应用程序设计,但是此处探讨的程序风格同样可以在 iPhone OS 设备的网页或混合应用程序中实现。在您阅读这三种应用程序风格时,思考一下每种风格的特点如何增强您的iPhone 应用程序中的功能和的整体用户体验。在您了解 iPhone 应用程序的不同设计风格时,记住以下问题有助于发掘最适合您的应用程序的特征组合: 您设想用户是出于什么样的动机去使用您的应用程序? 您计划中的用户会获得怎样的用户体验 您应用程序的目标或专注点是在哪儿? 您的应用程序如何组织,显示人们关心的信息?是否和应用程序的主要任务有天然的关系?效率型应用程序效率型应用程序具有组织和操作具体信
18、息的功能。效率型应用程序通常用于完成比较重要的任务。邮件是效率型应用程序的典型例子。目的的严肃性并不意味着效率型应用程序是干瘪无趣的,但是这种应用程序确实需要比较精简的用户体验,从而不会阻碍用户的工作。因此,成功的效率型应用程序将用户体验的重点放在任务上,用户可以快速地找到需要的东西,轻松地完成必要的操作,以完成该任务继而转向其他事务。效率型应用程序通常分层组织用户数据。因为用户可以逐步将选择具体化,直到达到期望的具体程度,以找到所需的信息。iPhone OS 提供了表格视图,保证了这一过程在 iPhone OS 设备上良好的用户体验(更多有关用户界面的信息,请参考 “表格视图” )。图 1-
19、1 显示了这种类型数据结构的示例。图 1-1 效率型应用程序通常分层组织信息效率型应用程序中的典型的用户交互模型通常包含: 组织列表 从列表中添加和删除 逐步细化信息直到达到目标的详细级别,而后执行与该详细级别对应的任务效率型应用程序一般采用多个视图,通常每一视图显示一个层次的信息。用户界面通常简单,整洁且由标准视图和控件组成。效率型应用程序通常没有很多自定义界面。原因在于效率型应用程序专注于信息和任务,而非环境或体验。在众多类型的 iPhone 应用程序中,效率型应用程序最有可能在设置应用程序中提供用户可操作的选项或者设置功能。这是因为效率型应用程序工作中涉及到大量信息以及许多潜在的访问和管
20、理方法。但是,需要强调的是,用户很少需要改变这些设置,所以这里不应包含那些能够在主界面中更改的配置信息。实用型应用程序实用型应用程序完成的简单任务对用户输入要求很低。用户打开实用型应用程序,是为了快速查看信息摘要或是在少数对象上执行简单任务 。天气程序(如图 1-2 所示)就是一个实用型应用程序的典型例子。它在一个易读的摘要中显示了重点明确的信息。图 1-2 天气程序是实用型应用程序的例子实用型应用程序具有视觉上的吸引力,但是又能够突出它们显示的信息。用户使用实用型应用程序来查看一些事情的状态或是查找一些东西,所以用户希望能够快速方便地看到他们感兴趣的信息。因此,实用型应用程序的用户界面十分简
21、洁,并提供简单的,标准的视图和控件。实用型应用程序一般以平面列表的方式显示信息;用户通常不需要深入信息层次结构。实用型应用程序中的每一个视图通常都提供同样的数据组织结构和细节深度,但是数据来源可以不同。由此,用户可以打开单个实用型应用程序以对多个主题进行相似处理。一些实用型应用程序能显示打开的视图的数量;由此用户可以按顺序浏览,在一个视图后选择另一个视图。图 1-3 显示了这种类型的数据组织结构。图 1-3 实用型应用程序通常在平面列表中显示数据实用型应用程序的用户交互模型非常简单:用户打开程序浏览信息摘要,然后能够选择改变信息的设置或来源。实用型应用程序可能需要支持频繁修改设置和信息来源,所
22、以它们通常在主视图的背面提供一小部分这样的选项。用户可以点击位于主视图右下角的,与信息按钮相似的按钮来查看主视图的背面。在调整完成之后,用户点击完成按钮即可返回主视图的正面。在实用型应用程序中,主视图背面的选项是应用程序功能的一部分,而不是用户设置一次以后就极少再用的一组偏好设置。因此,实用型应用程序不应该把特定设置放在设置应用程序中。图 1-4 显示了天气应用程序在主视图背面提供的配置选项。图 1-4 用户可以在天气应用程序的背面进行调整沉浸式应用程序沉浸式应用程序提供具有丰富视觉效果的全屏环境,专注于内容和用户对内容的体验。用户通常使用沉浸式应用程序进行娱乐,不论是玩游戏,观看多媒体内容还
23、是执行简单的任务。虽然很容易发现游戏非常适合这种 iPhone 应用程序风格,但是您可以想象一下,沉浸式应用程序的特点也可以增加其他类型任务的吸引力。呈现一个独立环境,不显示大量的文字信息,需要用户注意力的任务就十分适合采用沉浸式应用程序。例如,一个应用程序模拟了使用气泡水平仪的体验,它在全屏环境下执行的很好,即使它不符合游戏的定义。在这类程序中,也像游戏中一样,用户的焦点在于视觉上的内容和体验,而非体验背后的数据。图 1-5 显示了沉浸式应用程序的例子,它模拟了实际的用户体验并执行了简单的任务。图 1-5 沉浸式应用程序不一定是游戏注意: 虽然横向显示的程序启动时主页按钮应处于屏幕的右边,但
24、是图 1-5 中显示的水准仪程序启动时的方向恰恰相反。这保证了设备边缘的物理按钮不会干扰测量。关于启动的更多信息,请参考 “启动”一节。沉浸式应用程序通常隐藏设备的用户界面,代之以自定义用户界面,由此增强用户融入该应用程序的感觉。用户期望寻找和探索成为沉浸式应用程序体验的一部分,所以非标准控件显得更为适合。虽然沉浸式应用程序运行时可能涉及到大量数据的处理,但是通常不显示这些数据,不让用户顺序查看或探究明细。而是将信息呈现在游戏内容中,如播放,故事或是体验。同样由于这个原因,沉浸式应用程序通常显示自定义导航方法以配合环境,而标准的,数据驱动的方法则用于实用型应用程序或效率型应用程序中。沉浸式应用
25、程序的用户交互模型由应用程序提供的体验决定。虽然它不像游戏一样需要在设置中提供程序特定配置,但是其他类型的沉浸式应用程序可能需要提供。沉浸式应用程序也可能在主视图背后提供配置选项。选择一种应用程序风格在了解效率型应用程序,实用型应用程序和沉浸式应用程序风格以后,考虑一下您的应用程序显示的信息类型和所能完成的任务。理论上来说,您应创建的应用程序类型已经十分明显,您可以开始动手开发了;但实际上并不总是那么简单。这里有一个假设的情景来帮助您做出决定。如果您有一个想要关注的主题,考虑一下与其相关的对象和任务。想象一下人们对这一主题的不同理解。例如,拿棒球作为例子。棒球在众多事物中会让您想起,团队,游戏
26、,统计,历史和球员等。因为棒球对于一个应用程序主题来说可能过于广泛,所以仅考虑球员。现在,想象一下如何创建一个与球员有关的应用程序,例如,采用他们棒球卡上的肖像。您可以开发一个效率型应用程序来帮助认真的收藏家管理他们的棒球卡收藏。使用列表的格式,您可以在团队,球员和赛季的层次结构中显示卡片。在详细资料视图中,用户能够记录他们在哪里获得卡片,为卡片花费了多少钱,卡片当前的市场价值和卡片的副本数量。由于此应用程序的重点在于定义收藏的数据,所以用户界面简化了信息收集和添加的任务。您也可以开发一个实用型应用程序来显示特定棒球卡片的当前市场价值。每一视图都看起来像一张棒球卡片,上面添加了它的当前价值,视
27、图背面可以允许用户选择特定的卡片来追踪和显示。因为该应用程序的重点在于独立卡片上,所以用户界面强调卡片的外观并提供一个或两个控件以允许用户查找新卡片。当然,您也可以开发一款游戏。游戏的重点可能在于用户对个别棒球卡片的某些统计知识或是识别知名卡片的能力。又或者,仅用棒球卡片作为另一类型游戏中的图标,比如滑动拼图游戏。在这些情况中,应用程序的重点均为棒球卡片的图像和游戏的玩法。用户界面通过显示某些棒球主题控件,隐藏 iPhone OS 用户界面的方式来满足这一点。需要重申的是,不要局限于单个程序风格。您可能会发现不同程序风格的特点组合起来最符合您的程序目标。如果有疑问,就简化问题。将功能列表减少到
28、最小,并创建一个仅执行单个简单任务的程序(更多建议请参考 “给出产品定义说明”。)当您看见人们如何使用并对应用程序作出响应时,您可以选择对应用程序重点做轻微修改或是更改呈现方式,由此创建应用程序的另一版本。或者,您可能发现对于同一概念有更多或更少的细节要求的版本需求。当您有个现成的计算机应用程序时如果您已有一个计算机应用程序,不要只是将其移植到 iPhone OS 上。iPhone OS 设备的使用方法与台式计算机和笔记本电脑大不相同,用户对于用户体验的期望也不同。记住,用户使用 iPhone OS 设备时通常处于移动,纷杂的环境中。这意味着用户希望打开您的程序时,能够轻松简单地使用,进而可以
29、进行别的活动。如果您的应用程序要求用户在很长一段时间内集中注意力,那么如果您在将该应用程序转换为 iPhone OS 程序时,您需要重新考虑其结构和目的。如果您的桌面应用程序能够执行复杂的任务或是一系列任务,那么您应该仔细观察用户是如何使用该应用程序的,以便找到当用户处于移动状态时希望应用程序能够完成的子任务。例如,支持项目调度,结算和费用报告的,面向企业的应用程序可以转换为显示项目的进度摘要的 iPhone 实用型应用程序,或是允许移动用户跟踪其业务相关开支的效率型应用程序。当您考虑将您的桌面应用程序转换为 iPhone 应用程序时,应在设计应用程序时遵循 80-20 规则。最大比例用户(至
30、少 80%)将使用应用程序中非常有限的特性,仅一小部分用户(不大于 20%)将使用所有的特性。因此,您应仔细考虑,您是否想让您的 iPhone 应用程序承载仅有少部分用户使用的强大特性。您应意识到桌面应用程序可能是能够提供那些特性的较好环境,同时,将您的iPhone 应用程序的重点放在满足绝大部分用户需求的特性上通常来说是明智的选择。案例研究:将桌面应用程序移植到 iPhone OS为了帮助您理解如何创建桌面应用程序的 iPhone OS 版本,本小节介绍了一些常见的 Mac OS X 应用程序和其对应的 iPhone OS 版本的一些设计差异。当您了解了每个应用程序中哪些特点和功能适合 iP
31、hone OS 时候,那么,当您需要开发 iPhone 应用程序时,您就可以清楚明白所需要的设计方案。邮件邮件是 Mac OS X 中最明显的,广泛使用,且广受好评的应用程序。同时它也是功能非常强大的应用程序,允许用户撰写,收取,分类,存储邮件,跟踪行动项目和事件,创建笔记和邀请。邮件在一个多面板的窗口中提供大部分功能。这对于使用台式机电脑的用户来说十分方便,因为他们可以将一直邮件窗口留在显示屏上(或最小化到 Dock)并在他们选择的任意时刻转到邮件窗口。图1-6 显示了邮件查看窗口和撰写窗口提供的许多功能。图 1-6 台式机上的邮件程序在两个窗口中提供了很多的强大功能但是在人们处于移动状态时
32、,他们需要一个更加简单,且能够快速完成其核心功能的邮件程序。因此,在 iPhone OS 的设备上的邮件应用程序致力于实现用户处理邮件的最关键事项:收取,撰写,发送和管理邮件。为此,用户界面被精简,使得用户的帐户和邮箱的结构更为清晰,并将用户的注意力集中在邮件上。iPhone OS 中的邮件应用程序是一个效率型应用程序的完美例子。为了便于内容导航,iPhone OS 中的邮件应用程序利用了人们邮件中自然的层次结构,使用一连串的页面显示帐号,邮箱,邮件列表以及邮件内容。用户可以在列表中选择某一项,从一般(帐号列表)至特殊(一条信息)地进行深入了解,并查看与该项相关的事物。了解更多效率型应用程序风
33、格的 iPhone 应用程序,请参考 “效率型应用程序” 。另外,iPhone OS 中的邮件应用程序允许多种操作,比如创建和发送。这是通过显示几个可以被点击且用户熟悉的控件来实现的。图 1-7 显示了邮件应用程序如何使用户在 iPhone OS 中查看和发送邮件变得简单。注意每一屏上方的元素,它们让用户更轻松地了解到他们过去和当前在程序中所处的位置。图 1-7 iPhone OS 中的邮件应用程序使得查看和发送邮件变得简单iPhoto另一个从 Mac OS X 应用程序重构为 iPhone OS 程序的例子是 iPhoto。在台式机上,iPhoto 支持全面搜索和管理,具有强大的编辑能力以及
34、富有创意的打印选项。当人们在他们的台式机或笔记本电脑上使用 iPhoto 时,他们希望能够查看和管理整个收藏集,对照片进行调整并且以各种方式来操纵照片。虽然iPhoto 的重点是用户的内容,但是程序也在其窗口中提供了丰富的功能。图 1-8 显示了台式机上 iPhoto 的用户界面。图 1-8 iPhoto 用户界面但是在用户处于移动状态时,他们没有时间来编辑图片(同时他们也不期望能够打印图片);而是希望能够快速浏览并分享他们的图片。为了在 iPhone OS 设备上满足这一要求,苹果提供了照片应用程序。该程序能够显示图片并与其他用户分享图片。照片应用程序的用户界面完全以照片为核心;以至于实际设
35、备的用户界面被部分隐藏。当用户选择以幻灯片形式查看图片时,照片应用程序将隐藏导航栏,工具栏甚至状态栏。当用户需要查看这些工具栏时,这些元素又以半透明状态显示出来。照片应用程序使用层级结构使得用户可以来轻松地整理,查找照片:用户可以选择一个包含了一系列照片的相册,而后从相册中选择单张照片。按照这种方式,照片应用程序就是一个结合了效率型应用程序风格和沉浸式应用程序风格特性(了解更多有关这些风格的信息,见 “三种应用程序风格”)的应用程序。图 1-9 显示了用户如何在照片应用程序中查看图片。图 1-9 照片应用程序中的三个界面另外,照片应用程序提供临时视图,称为动作表单(如 “警告,动作表单以及模式
36、视图”所述),从而让用户能够在不退出图片查看视图的情况下使用其他的功能。图 1-10 显示了照片应用程序如何为单张图片提供动作表单。图 1-10 照片应用程序的动作表单人机界面准则:创建优秀的用户界面优秀的用户界面应该遵循一些人机界面设计准则,这些准则来源于人也即用户思考和工作的方式,而不是设备的能力。没有吸引力的,令人难以理解的或是不合逻辑的用户界面会让一个原本优秀的程序成为垃圾,而漂亮,直观而又吸引人的用户界面不仅可以改善程序的功能,还能激发用户的正面依赖感。即使您已经对基本的设计准则有所了解,这一章也值得您读一下,因为本章着重讲述了这些准则是如何应用在 iPhone 应用程序中的。隐喻尽
37、可能按照现实世界中的对象和操作来对您程序中的对象和操作建模。这能够帮助用户,尤其是新手,迅速地理解您的应用程序的是如何工作的。文件夹就是一个典型的软件隐喻。因为在现实世界中,人们将文件放在文件夹里,所以人们就能够迅速地理解在计算机上将数据放入文件夹的概念。iPhone OS 中的隐喻包括 iPod 播放控件,点击控件来触发事件,滑动开关,以及调色板上的数据。虽然隐喻暗示了 iPhone OS 用户界面中对象和操作的含义,但是并没有限制其软件实现。回到文件夹的例子,软件实现的文件夹对象所具有的容量与现实世界中所对应的文件夹的物理容量毫无关系。在您设计程序时,需要注意 iPhone OS 中已存在
38、的隐喻,避免重复定义。同时,检查您的程序功能是否有对应的可用的自然隐喻。记住,即使如此,相较于为了适应您的应用程序用户界面而勉强使用现实世界的对象或操作的隐喻而言,使用标准控件和操作更为妥善。除非您选择的隐喻能得到大部分用户的认可,包括那些会增加而不是减少用户困惑的隐喻。直观操作直观操作意为人们感到他们在物理上,而非抽象地控制某物。其优点在于,用户更容易理解他们的行为对于操作对象所产生的结果。得益于多点触摸的用户界面,iPhone OS 用户享有高度直观的操控感。手势的使用让人们感到屏幕上显示的对象具有更大的亲和力和更强的操控感,因为他们并不需要用任何中间设备(如鼠标)就操控它们。为了提高您的
39、 iPhone 应用程序的操控感,您应确保: 当用户操作屏幕上的对象时,这些对象保持可见 用户操作的结果是一目了然的即看即点iPhone 应用程序比人更善于记住一些选项,命令,数据等。通过列表的形式来提供选择或选项,用户可以轻松地浏览它们并作出选择。尽量减少文本输入的需要,使得用户就不必花费大量时间输入命令,您的程序也不需要执行大量的错误检查。让用户做出选择,而不是要求他们进行开放式的输入,这样能够让用户能够集中精力通过您的程序完成任务,而不是疲于记忆如何操作。反馈用户除了需要看到操作的结果外,还需要得到操作及时的反馈,以及在长时间操作时的状态报告。您的程序应通过一些视觉上的变化来回应用户的每
40、一个操作。例如,当用户点击列表项时,确保其高亮显示。 声音提示同样有效,但是它不能作为主要或唯一的反馈机制。因为人们可能在无法听见声音或是必须关闭声音的环境中使用 iPhone OS 的设备。另外,您不能使用 iPhone OS 的系统声音,因为他们已经和系统警告关联。iPhone OS 繁忙时会显示活动指示符以自动提供反馈。在持续几秒以上的操作过程中,您的应用程序应显示完成进度,在适当的情况下,还应显示解释性消息。精细且有意义的动画是向用户提供反馈的良好方式。动画贯穿于整个 iPhone OS,即使是在非沉浸式的程序中。作为一种提供反馈的方式,动画只是用于增强用户的体验,但不是用户体验的焦点
41、。用户控制让用户来触发和控制操作,而不是您的应用程序。保持操作简单直接,使得用户可以轻松地理解和并记住他们。尽可能使用用户已经熟悉的标准控件和行为。在操作开始前应提供充分的取消操作的机会,并且确保在用户触发潜在的破坏性操作时取得操作确认。尽可能使用户能够正常终止正在进行的操作。美学完整性虽然一个程序的首要目的是为了完成某个任务,即使该任务仅仅是玩游戏,我们也不应低估程序外观的重要性。这是因为外观对功能有深远的影响:一个看起来零乱或者缺乏逻辑的程序是很难被理解和使用的。美学上的完整性并不是用来衡量您的程序有多漂亮,而是衡量您程序的外观和程序功能结合得有多好。例如,一个效率型应用程序应尽量精简装饰
42、性的元素并置于背景中,同时使用标准控件和行为以突出任务。沉浸式程序是另一极端,用户期待有趣且需要一些探索的漂亮外观。虽然程序趋向于提供消遣,但是其外观仍需和其任务结合。仔细设计这类程序的用户界面,从而为用户提供内部一致的用户体验。设计 iPhone 应用程序:从产品定义到品牌宣传当您开发 iPhone 应用程序时,您需要了解 iPhone OS 以及移动设备环境的各个方面给您的设计带来的影响。本章涵盖了从产品定义到品牌宣传的一系列程序设计问题的指导方针,并介绍了在 iPhone 应用程序中是如何解决这些问题的。给出产品定义说明在开始设计您的应用程序之前,精确定义您的应用程序是用来做什么的非常重
43、要。一个比较好的方法是撰写一份产品定义说明用于描述您的应用程序的主要功能及目标用户的文档。创建产品定义说明不仅仅是一种练习,相反地,它是将一系列产品功能转化成一个清晰完整的产品的最佳方法之一。首先,花些时间定义您的目标用户:他们是专家还是新手?是严谨的还是随和的?是带着特定任务来寻求帮助还是为了娱乐消遣的?了解这些可以帮助您根据用户的特殊需求来定制用户体验和用户界面。由于您是在设计一个 iPhone 应用程序,有一些用户需求是已知的。例如: 他们是移动的。 他们希望能够尽可能快地打开您的应用程序,并立即看到有用的信息。 他们应只需要简单几步就能够完成任务然后思考一下,什么样的特性使得您的用户和
44、 iPhone OS 的其他用户区分开。他们是商人,青少年还是退休人员?他们是否会在每一天的结束时,或是当他们查收电子邮件时,亦或是当他们有一些额外时间时,使用您的应用程序呢?您对目标用户定义得越准确,您对用户界面的外观,体验以及功能的设计也就越准确。例如,如果您的应用程序是帮助商务人士记录他们的开支,那么您的用户界面应该侧重于提供正确的分类,并且易于输入费用,而不是询问许多无关核心功能的细节。另外,您最好为界面选择一种比较专业的颜色,并且不会让用户产生视觉疲劳。或者,如果您的应用程序是一个以青少年为目标受众的游戏,那么您可能需要一个活泼一点的用户界面,煽动性的语言,时尚一点的色彩。最后,研究
45、一下您打算提供的产品功能。根据您对目标用户的想象,尝试将一系列产品功能提炼成一份产品定义说明文档,这份文档描述了您的产品所提供的解决方案以及您的目标用户。例如, iPhoto 桌面应用程序允许用户整理,编辑,共享,打印和查看照片,但一份优秀的产品定义说明不仅仅包括产品的功能,同时还描述了其目标用户。因此,一份完整的 iPhoto 产品定义说明可能是“一种为业余摄影爱好者设计的,简单易用的照片管理应用程序。”注意,在产品定义说明中包含您的目标用户定义是多么重要:想象一下,如果 iPhoto 被定义为成“一种为专业摄影师提供的,简单易用的照片管理应用程序”,那将有多么不同。一份优秀的产品定义说明就
46、像一个工具,您应该在整个开发过程中使用它来确定功能,工具和术语的是否合适。尤其重要的是清除那些不符合产品定义说明的元素,因为 iPhone 应用程序没有多余空间去支持非核心功能。例如,想象一下,您正在考虑开发一个人们在购买生活用品时可以使用的iPhone 应用程序。在计划阶段,您可能需要考虑用户可能喜欢的许多种不同的活动,例如: 获取关于特定食品的营养信息 寻找打折和优惠信息 创建和使用购物清单 定位商店 查阅食谱 比较价格 查看购物总额然而,您认为您的用户最关心的是记住他们需要购买的所有东西,尽可能地省钱,并且很可能急于带着采购品回家。根据这些对用户的定义,您可以为您的应用程序制作一份产品定
47、义说明,比如“为忙碌的人群提供创建购物清单,查找折扣的工具。”通过这份产品定义说明过滤掉产品的潜在功能,您决定主要侧重于如何使购物清单易于创建,存储和使用。您也为用户提供了查找他们购物清单上所列商品的打折信息的功能。即使其他功能也是有用的(并且可能成为其他应用的主要功能),但它们不符合这个应用程序的产品定义说明。当您确定了一个可靠的产品定义说明,并且开始使用它来过滤提出的那些功能,您可能还希望用它来确保最初关于应用程序类型的决定是正确的。如果您在头脑中带着一个具体的应用程序类型开始了您的开发过程,您可能会发现定义产品定义说明的过程已经改变了其面貌。 ( 关于您所能开发的不同类型的应用程序,请参
48、考 “三种应用程序风格”)优秀 iPhone 应用程序的共性优秀的 iPhone 应用程序精确地满足了用户需求,同时提供了用户想要的体验。为了帮助您在应用程序中平衡这两点,本小节归纳了优秀 iPhone 应用程序的一些共有特点,并就如何将这些特点融合到您的产品中给予了建议。简单和易用性简单和易用是所有软件的基本原则,但在 iPhone 应用程序中它们尤其重要。iPhone OS 用户很可能在使用您的应用程序的同时,还做着其他事情。如果用户无法快速明白如何使用您的应用程序,他们很可能会转而使用其他竞争者的应用程序,而且不会再尝试您的应用程序。当您设计应用程序流程以及用户界面时,请遵循如下准则以保
49、证应用程序的简单且易于使用: 如何使用您的应用程序应显而易见。 常见的功能和信息集中于屏幕的顶部。 最大限度地减少文本输入。 简洁地表达基本信息。 为所有可点击元素提供一个指尖大小的目标区域。以下各小节就简单和易用性的准则进行更详细的说明。显而易见您不能假设用户有时间(或能够分出注意力)来研究您的应用程序是如何运作。因此,您必须努力让应用程序能够立刻被用户理解。您的应用程序的主要功能应该一目了然。您可以最大限度地减少用户必须选择的控件数量,并清晰地标识这些控件以便用户明白它们的功能。例如,在内置的秒表功能中(时钟应用程序的一部分),如图 3-1 所示,用户一眼就可以看出哪个是停止按钮,哪个是启动按钮,哪个是用来记录每圈时间。图 3-1 内置秒表功能的用法显而易见由上而下的布局用户可以用手指或大拇指点击一个 iPhone OS 的设备的屏幕。用户倾向于用他们的非惯用手握住设备(或搁在手心),用惯用手的手指点击设备。当使用大拇指时,人们要么将设备一手握住,然后用大拇指点击,要么将设备握于双手间,同时用两根大拇指点击。无论用哪一种方式,对于用户来说屏幕最上方都是最显眼的。由于这些使用模式,您在设计应用程序的用户界面时,应将最常使用的(通常也是重要的)信息置于最明显且最方便的顶部。当用户从屏幕顶部浏览到底部的时候