- 浏览: 569543 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
JYY282:
[i][/i]
Ecshop与Shopex的比较 -
qq247890212:
我也遇见这问题了,真诡异。重新下载个猫换了就好了。 太浪费时间 ...
诡异:ClassNotFoundException: org.springframework.web.filter.CharacterEncoding
From: http://www.1000phone.net/thread-7933-1-1.html
介绍
iPhone 和iPod touch融合了革命性的多点触摸技术和多种强大功能,如电子邮件,即时通信,全功能网页浏览器和iPod等,另外iPhone还具有移动电话的功能。 iPhone OS是在iPhone和iPod touch上运行的系统软件。随着iPhone SDK的发布,这些强大的功能为开发人员提供了众多的开发可能。开发者不但可以创建在iPhone OS设备上使用的网页内容,还可以使用iPhone SDK来创建在设备中储存和使用的本地程序。
本 文档可以帮助您了解可以为iPhone OS创建何种类型的应用程序以及优秀iPhone程序基础的人机界面设计准则。在本文档中,您可以了解到如何在设计最佳用户界面和用户体验时遵循这些原 则。不论您是经验丰富的计算机程序开发员,或是一位熟练的移动设备程序开发员,还是程序开发领域的新手,本文档中都能够帮助您开发出用户需要的 iPhone程序。
- 注意:本文档简要地介绍了如何为iPhone OS设备进行基于网页的开发。更多详细信息,请参考iPhone Web应用程序人机界面指南 。
本文档的组织结构
iPhone人机界面指南
分为两部分,每一部分都包含几个章节:
手势 操作 Tap 按或选择一个控件或项目(类似于单击一次鼠标)。 Drag 拖动 Flick 快速滚动或摇晃 Swipe 在一个表视图行中,显示删除按钮。 Double tap 放大并将内容或图片部分居中。缩小(如果已经被放大的话)。 Pinch open 放大 Pinch close 缩小 Touch and hold 在可编辑文本中,显示一个放大的光标视图。 类别 含义 通过“振铃/静音”切换置为无声并锁定 与其他音频混合 SoloAmbient 增强应用程序功能的声音,应该将其他音频静音 是 否 Ambient 增强应用程序功能的声音,但不应将其他音频静音s 是 是 Playback 对应用程序功能来说必不可少的声音,可以与其他音频混合 否 否(默认)是(当添加MixWithOthers属性时) Record 用户录制的音频 否 否 PlayAndRecord 代表音频输入和输出的声音,顺序地或并行地 否 否(默认)s是(当添加MixWithOthers属性时) AudioProcessing 执行辅助硬件的音频编码的应用程序(它不播放或录音) - 否 按钮 含义 名称 打开动作表单,允许用户执行应用程序特定的动作 动作 打开动作表单,显示相机模式下的照片选择器 相机 打开新消息的编辑模式视图 撰写 显示应用程序特定的书签 书签 显示搜索框 搜索 创建一个新项 添加 删除当前项 回收站 在应用程序中将某一项移动或路由至指定目的地,如文件夹 组织 将某一项发送或路由至另一位置 回复 停止当前进程或任务 停止 刷新内容(只在必要时使用;其他情况下自动刷新) 刷新 开始播放媒体或幻灯片 播放 快进当前播放的媒体或幻灯片 快进 暂停当前播放的媒体或幻灯片(请注意,这意味着上下文保存) 暂停 快退当前播放的媒体或幻灯片 快退 按钮 含义 名称 进入编辑或内容操作模式 编辑 退出编辑或内容操作模式而不保存更改 取消 保存更改,并在合适的情况下退出编辑或内容操作模式 保存 退出当前模式并保存修改(如果有的话) 完成 图标 含义 名称 显示应用程序特定的书签 书签 显示联系人 联系人 显示下载 下载 显示当前用户的收藏夹 收藏夹 显示应用程序的特色内容 特色 显示用户操作的历史 历史 显示标签项上的更多项 更多 显示最近一次使用的项 最近一次使用 显示所有用户最关注的项 最多关注 显示由应用程序定义的一段时间以来用户访问过的项 最近使用 进入搜索模式 搜索 显示用户评级最高的项 最高级 Button Meaning Name 显示联系人选择器,向某一项中添加联系人 添加联系人 显示一个新视图,其中包含当前项的详细信息 详细信息展开 翻转至视图的背面(通常出现在工具程序中)以显示配置选项或其他信息。请注意,“信息”按钮也可以是暗色的圆圈当中有一个亮色字母“i”。 信息
参考
如果您需要了解编写iPhone应用程序的更多信息,请参考:
如果您需要了解为iPhone OS设备设计Web应用程序的更多信息,请参考:
设计您的iPhone应用程序
本部分描述了设计和开发iPhone OS应用程序的思想方法。通过阅读本部分的章节,您可以了解iPhone OS上不同的程序类型以及您将在工作中用到的设计准则。您也可以了解如何在您的应用程序中应用这些准则,使您的程序具有直观而又引人注目的用户界面。
iPhone OS平台:丰富的可能性
iPhone
OS支持很多类型的软件,从基于Safari的Web应用,到iPhone本地应用程序,都可以运行在iPhone
OS设备上。本章概要地介绍了为iPhone OS设备创建不同类型软件的解决方案。如果您刚接触该平台,您应先阅读第一节中iPhone
OS设备和其他计算机的差异总结,“牢记平台间的差异”。虽然此节的信息并不全面,但已经包含了您在设计iPhone应用程序时需要意识到的问题。接下
来,本章阐述了设计不同应用程序风格和特点时的思维方式,以帮助您设计iPhone应用程序。本章也阐述了如何将现有的Mac OS
X应用程序转换为iPhone OS版本的应用程序。牢记平台间的差异
iPhone
OS设备不同于台式机或笔记本电脑,iPhone应用程序也与桌面应用程序不同。虽然这些似乎只是常识性陈述,但是您在为这些设备开发软件时意识到这些差
异还是非常重要的。为iPhone
OS设备开发软件需要的思维方式可能是也可能不是您所习惯的。尤其是在您的经验主要是开发桌面应用程序的情况下,您应该了解为移动平台设计软件和为台式机
设计软件的差异。本小节总结了这些具体的差异。这些差异对于您的设计选择具有潜在的影响。有关如何处理这些差异以及iPhone应用程序开发过程中的其他
问题的具体信息,请参考iPhone应用程序编程指南。
紧凑的屏幕尺寸
iPhone
OS设备具有高分辨率的小型屏幕,适合用户放入口袋且具有强大的显示功能。然而这个对用户来说巨大的优势可能成为您的挑战。因为这意味着您必须设计一个可
能与您的设计习惯差异较大的用户界面。iPhone OS设备屏幕的尺寸是480 x
320。考虑到这一点,用户界面应该主要关注必不可少的部分。您没有空间来放置那些非必要的设计元素。另外,拥挤的用户界面将降低程序的吸引力并会提高使
用的难度。内存是有限的
内存是iPhone OS的重要资源,所以在应用程序中管理内存至关重要。因为iPhone
OS的虚拟内存模型不包括磁盘交换空间,所以您必须注意避免分配的内存超出设备的可用内存。发生内存过低的情况时,iPhone
OS将警告运行中的应用程序,若问题仍然存在,应用程序可能被终止。确保您的应用程序对于内存使用警告作出回应,并及时清理内存。在您设计应用程序时,可
以通过避免内存泄漏,减小资源文件大小以及延迟加载资源的方式,尽力地降低程序的内存占用。关于如何在iPhone应用程序中合理处理内存的的更多信息,
请参考iPhone应用程序编程指南
。每次只能显示一个窗口
iPhone
OS环境和计算机环境的最大区别之一就是窗口模式。除了一些模式视图外,在iPhone
OS设备上,用户每次在屏幕上只能看到应用程序的单个窗口。iPhone应用程序可以包含必要数量的不同窗口,但是用户不能同时访问,只能顺序访问和查
看。如果应用程序的台式机版本需要用户同时看到几个窗口,那么您需要考虑是否存在其他的方式让用户能够在单个窗口或一系列顺序查看的窗口中完成同样的任
务。如果不存在这种方式,您的iPhone应用程序不应考虑复制计算机版本程序的完整功能,而应改为实现计算机版本的单个子任务。每次只能运行一个程序
同
一时刻只有一个iPhone应用程序可以运行,第三方应用程序不能在后台运行。这意味着当用户切换到另一个应用程序,接电话或是查看邮件时,他们当前使用
的应用程序将被关闭。重要的是,您应确保这一特点没有对用户产生负面影响。也就是说,在用户离开您的iPhone应用程序并在稍后返回时,用户应该不会感
到比在计算机上的程序切换更加困难。保证用户享有良好的程序切换体验的最有效方法就是将您的应用程序的启动时间降到最低。关于如何尽可能地减少启动时间的
更多信息,请参考iPhone应用程序编程指南
。一般说来,用户通过切换至设备上其他应用程序或服务的方式退出您的应用程序时,他们不会
特地关闭您的应用程序。因此,不要期望用户显式地从菜单中选择退出或是点击关闭按钮。这意味着您的程序可能在没有太多通知的情况下退出,由此您应尽可能迅
速地保存用户所做的修改。这样就能在应用程序切换时形成快速而平稳的过渡,并且保证下一次您的应用程序启动时能够显示用户最近做的修改。简单程序模型的另
一个重要方面是您处理程序特定配置的方式。在iPhone
OS设备上,用户在设置程序中设定配置。您的iPhone应用程序可以提供这种配置,但是这意味着当用户想在设置中访问这些配置时,他们必须退出您的程
序。如果您根据标准指南提供用户仅需设定一次的设置,那么您的程序的用户体验就会比较流畅。简短的用户帮助
移动用户在使用您的应用程序前没有时间通读大量的帮助内容。更重要的是,您也不想用宝贵的空间显示或存储帮助内容。iPhone OS设备的设计特点是易用,所以满足用户的期望并使您的应用程序用法清晰明确是十分关键的。您可以采取如下措施:
您的选择是什么?
在您决定如何将产品呈现给iPhone OS用户前,您需要了解您可以选择的范围。根据产品的实现细节和目标用户,某些类型的软件可能更符合您的需求。本节将为iPhone OS设备开发的软件根据实现方法分为三大类。粗略地说,您可以创建:
iPhone应用程序
iPhone应用程序
类似于Phone
OS设备上的内置应用程序,因为它们驻留在设备本身并且利用了iPhone
OS环境的特性。用户在他们的设备上安装iPhone应用程序,并像使用内置应用程序一样使用这些程序,例如股票,地图,计算器和邮件。iPhone应用
程序启动十分迅速且易于使用。不论应用程序的任务是发送邮件还是为用户提供娱乐,它都应具备快速响应以及简单的特点,另外还应有漂亮简洁的用户界面。仅在网页上显示的内容
涉及到为iPhone OS用户提供仅在网页上显示的内容
时,您有一些不同的选择:
如果您已经拥有一个网站或Web应用,首先需要确保其能在iPhone
OS设备上正常工作。同时,您应考虑创建一个自定义图标,用户可以将该图标放在主屏幕上并使用网页剪辑功能。实际上,这样用户就能在他们的主屏幕上保留一
个看起来像本地应用程序图标的,指向您网站的书签。了解有关创建自定义图标以及如何让iPhone
OS设备上的网页内容具有良好视觉效果的更多信息,请参考iPhone人机界面指南之Web应用。
混合应用程序
在iPhone OS中您可以创建一个结合本地程序和网页功能的程序。混合应用程序
是一个本地iPhone应用程序,它通过Web视图区域来展示其结构和功能,但是仍然包含标准的iPhone OS用户界面元素。混合应用程序让用户通过一个称为Web视图 (如 “Web视图”
所述)的元素访问网页内容。确切地说,如何在您的应用程序中使用Web视图由您决定,但是应避免让用户觉得您的应用程序仅仅是一个小型的网页浏览器。混合应用程序应像一个本地iPhone应用程序一样运行;而不应凸显依赖网络资源这一事实。三种应用程序风格
根
据视觉和行为特征,数据模型以及用户体验,本文档定义了三种程序风格。在您深入阅读之前,需要强调的是,这些分类的命名和描述是为了帮助您清楚地确认您的
设计方案,并不表示所有的iPhone应用程序都必须严格地遵循这些分类。描述这些风格是为了帮助您了解不同风格的应用程序具有不同的设计方案。
效率型应用程序
效率型应用程序
具有组织和操作具体信息的功
能。效率型应用程序通常用于完成比较重要的任务。邮件是效率型应用程序的典型例子。目的的严肃性并不意味着效率型应用程序是干瘪无趣的,但是这种应用程序
确实需要比较精简的用户体验,从而不会阻碍用户的工作。因此,成功的效率型应用程序将用户体验的重点放在任务上,用户可以快速地找到需要的东西,轻松地完
成必要的操作,以完成该任务继而转向其他事务。效率型应用程序通常分层组织用户数据。因为用户可以逐步将选择具体化,直到达到期望的具体程度,以找到所需
的信息。iPhone OS提供了表格视图,保证了这一过程在iPhone OS设备上良好的用户体验(更多有关用户界面的信息,请参考“表格视图”
)。图1-1显示了这种类型数据结构的示例。图 1-1
效率型应用程序通常分层组织信息
效率型应用程序中的典型的用户交互模型通常包含:
效率型应用程序一般采用多个视图,通常每一视图显示一个层次的信息。用户界面通常简单,整洁且由标准视图和控件组成。效率型应用程序
通常没有很多自定义界面。原因在于效率型应用程序专注于信息和任务,而非环境或体验。在众多类型的iPhone应用程序中,效率型应用程序最有可能在设置
应用程序中提供用户可操作的选项或者设置功能。这是因为效率型应用程序工作中涉及到大量信息以及许多潜在的访问和管理方法。但是,需要强调的是,用户很少
需要改变这些设置,所以这里不应包含那些能够在主界面中更改的配置信息。实用型应用程序
实用型应用程序
完成的简单任务对用户输入要求很低。用户打开实用型应用程序,是为了快速查看信息摘要或是在少数对象上执行简单任务 。天气程序(如图1-2所示)就是一个实用型应用程序的典型例子。它在一个易读的摘要中显示了重点明确的信息。图 1-2
天气程序是实用型应用程序的例子
实用型应用程序具有视觉上的吸引力,但是又能够突出它们显示的信息。用户使用实用型应用程序来查看一些事情的状态或是查找一些东西,所以用户希望能够快速
方便地看到他们感兴趣的信息。因此,实用型应用程序的用户界面十分简洁,并提供简单的,标准的视图和控件。实用型应用程序一般以平面列表的方式显示信息;
用户通常不需要深入信息层次结构。实用型应用程序中的每一个视图通常都提供同样的数据组织结构和细节深度,但是数据来源可以不同。由此,用户可以打开单个
实用型应用程序以对多个主题进行相似处理。一些实用型应用程序能显示打开的视图的数量;由此用户可以按顺序浏览,在一个视图后选择另一个视图。图1-3显
示了这种类型的数据组织结构。图 1-3
实用型应用程序通常在平面列表中显示数据
实用型应用程序的用户交互模型非常简单:用户打开程序浏览信息摘要,然后能够选择改变信息的设置或来源。实用型应用程序可能需要支持频繁修改设置和信息来
源,所以它们通常在主视图的背面提供一小部分这样的选项。用户可以点击位于主视图右下角的,与信息按钮相似的按钮来查看主视图的背面。在调整完成之后,用
户点击完成按钮即可返回主视图的正面。在实用型应用程序中,主视图背面的选项是应用程序功能的一部分,而不是用户设置一次以后就极少再用的一组偏好设置。
因此,实用型应用程序不应该把特定设置放在设置应用程序中。图1-4显示了天气应用程序在主视图背面提供的配置选项。图 1-4
用户可以在天气应用程序的背面进行调整
沉浸式应用程序
沉浸式应用程序
提供具有丰富视觉效果的全屏环境,专注于内容和用户
对内容的体验。用户通常使用沉浸式应用程序进行娱乐,不论是玩游戏,观看多媒体内容还是执行简单的任务。虽然很容易发现游戏非常适合这种iPhone应用
程序风格,但是您可以想象一下,沉浸式应用程序的特点也可以增加其他类型任务的吸引力。呈现一个独立环境,不显示大量的文字信息,需要用户注意力的任务就
十分适合采用沉浸式应用程序。例如,一个应用程序模拟了使用气泡水平仪的体验,它在全屏环境下执行的很好,即使它不符合游戏的定义。在这类程序中,也像游
戏中一样,用户的焦点在于视觉上的内容和体验,而非体验背后的数据。图1-5显示了沉浸式应用程序的例子,它模拟了实际的用户体验并执行了简单的任务。图 1-5
沉浸式应用程序不一定是游戏
但是在人们处于移动状态时,他们需要一个更加简单,且能够快速完成其核心功能的邮件程序。因此,在iPhone
OS的设备上的邮件应用程序致力于实现用户处理邮件的最关键事项:收取,撰写,发送和管理邮件。为此,用户界面被精简,使得用户的帐户和邮箱的结构更为清
晰,并将用户的注意力集中在邮件上。iPhone OS中的邮件应用程序是一个效率型应用程序的完美例子。为了便于内容导航,iPhone
OS中的邮件应用程序利用了人们邮件中自然的层次结构,使用一连串的页面显示帐号,邮箱,邮件列表以及邮件内容。用户可以在列表中选择某一项,从一般(帐
号列表)至特殊(一条信息)地进行深入了解,并查看与该项相关的事物。了解更多效率型应用程序风格的iPhone应用程序,请参考“效率型应用程序”
。
另外,iPhone
OS中的邮件应用程序允许多种操作,比如创建和发送。这是通过显示几个可以被点击且用户熟悉的控件来实现的。图1-7显示了邮件应用程序如何使用户在
iPhone OS中查看和发送邮件变得简单。注意每一屏上方的元素,它们让用户更轻松地了解到他们过去和当前在程序中所处的位置。图 1-7
iPhone OS中的邮件应用程序使得查看和发送邮件变得简单
iPhoto
另一个从Mac OS X应用程序重构为iPhone
OS程序的例子是iPhoto。在台式机上,iPhoto支持全面搜索和管理,具有强大的编辑能力以及富有创意的打印选项。当人们在他们的台式机或笔记本
电脑上使用iPhoto时,他们希望能够查看和管理整个收藏集,对照片进行调整并且以各种方式来操纵照片。虽然iPhoto的重点是用户的内容,但是程序
也在其窗口中提供了丰富的功能。图1-8显示了台式机上iPhoto的用户界面。图 1-8
iPhoto用户界面
但是在用户处于移动状态时,他们没有时间来编辑图片(同时他们也不期望能够打印图片);而是希望能够快速浏览并分享他们的图片。为了在iPhone
OS设备上满足这一要求,苹果提供了照片应用程序。该程序能够显示图片并与其他用户分享图片。照片应用程序的用户界面完全以照片为核心;以至于实际设备的
用户界面被部分隐藏。当用户选择以幻灯片形式查看图片时,照片应用程序将隐藏导航栏,工具栏甚至状态栏。当用户需要查看这些工具栏时,这些元素又以半透明
状态显示出来。照片应用程序使用层级结构使得用户可以来轻松地整理,查找照片:用户可以选择一个包含了一系列照片的相册,而后从相册中选择单张照片。按照
这种方式,照片应用程序就是一个结合了效率型应用程序风格和沉浸式应用程序风格特性(了解更多有关这些风格的信息,见“三种应用程序风格”
)的应用程序。图1-9显示了用户如何在照片应用程序中查看图片。图 1-9
照片应用程序中的三个界面
另外,照片应用程序提供临时视图,称为动作表单(如“警告,动作表单以及模式视图”
所述),从而让用户能够在不退出图片查看视图的情况下使用其他的功能。图1-10显示了照片应用程序如何为单张图片提供动作表单。图 1-10
照片应用程序的动作表单
人机界面准则:创建优秀的用户界面
优秀的用户界面应该遵循一些人机界面设计准
则,这些准则来源于人—也即用户—思考和工作的方式,而不是设备的能力。没有吸引力的,令人难以理解的或是不合逻辑的用户界面会让一个原本优秀的程序成为
垃圾,而漂亮,直观而又吸引人的用户界面不仅可以改善程序的功能,还能激发用户的正面依赖感。即使您已经对基本的设计准则有所了解,这一章也值得您读一
下,因为本章着重讲述了这些准则是如何应用在iPhone应用程序中的。隐喻
尽可能按照现实世界中的对象和操作来对您
程序中的对象和操作建模。这能够帮助用户,尤其是新手,迅速地理解您的应用程序的是如何工作的。文件夹就是一个典型的软件隐喻。因为在现实世界中,人们将
文件放在文件夹里,所以人们就能够迅速地理解在计算机上将数据放入文件夹的概念。iPhone
OS中的隐喻包括iPod播放控件,点击控件来触发事件,滑动开关,以及调色板上的数据。虽然隐喻暗示了iPhone
OS用户界面中对象和操作的含义,但是并没有限制其软件实现。回到文件夹的例子,软件实现的文件夹对象所具有的容量与现实世界中所对应的文件夹的物理容量
毫无关系。在您设计程序时,需要注意iPhone
OS中已存在的隐喻,避免重复定义。同时,检查您的程序功能是否有对应的可用的自然隐喻。记住,即使如此,相较于为了适应您的应用程序用户界面而勉强使用
现实世界的对象或操作的隐喻而言,使用标准控件和操作更为妥善。除非您选择的隐喻能得到大部分用户的认可,包括那些会增加而不是减少用户困惑的隐喻。直观操作
直
观操作意为人们感到他们在物理上,而非抽象地控制某物。其优点在于,用户更容易理解他们的行为对于操作对象所产生的结果。得益于多点触摸的用户界
面,iPhone
OS用户享有高度直观的操控感。手势的使用让人们感到屏幕上显示的对象具有更大的亲和力和更强的操控感,因为他们并不需要用任何中间设备(如鼠标)就操控
它们。为了提高您的iPhone应用程序的操控感,您应确保:
即看即点
iPhone应用程序比人更善于记住一些选项,命令,数据等。通过列表的形式来提供选择
或选项,用户可以轻松地浏览它们并作出选择。尽量减少文本输入的需要,使得用户就不必花费大量时间输入命令,您的程序也不需要执行大量的错误检查。让用户
做出选择,而不是要求他们进行开放式的输入,这样能够让用户能够集中精力通过您的程序完成任务,而不是疲于记忆如何操作。反馈
用
户除了需要看到操作的结果外,还需要得到操作及时的反馈,以及在长时间操作时的状态报告。您的程序应通过一些视觉上的变化来回应用户的每一个操作。例如,
当用户点击列表项时,确保其高亮显示。
声音提示同样有效,但是它不能作为主要或唯一的反馈机制。因为人们可能在无法听见声音或是必须关闭声音的环境中使用iPhone
OS的设备。另外,您不能使用iPhone OS的系统声音,因为他们已经和系统警告关联。iPhone
OS繁忙时会显示活动指示符以自动提供反馈。在持续几秒以上的操作过程中,您的应用程序应显示完成进度,在适当的情况下,还应显示解释性消息。精细且有意
义的动画是向用户提供反馈的良好方式。动画贯穿于整个iPhone
OS,即使是在非沉浸式的程序中。作为一种提供反馈的方式,动画只是用于增强用户的体验,但不是用户体验的焦点。用户控制
让
用户来触发和控制操作,而不是您的应用程序。保持操作简单直接,使得用户可以轻松地理解和并记住他们。尽可能使用用户已经熟悉的标准控件和行为。在操作开
始前应提供充分的取消操作的机会,并且确保在用户触发潜在的破坏性操作时取得操作确认。尽可能使用户能够正常终止正在进行的操作。美学完整性
虽
然一个程序的首要目的是为了完成某个任务,即使该任务仅仅是玩游戏,我们也不应低估程序外观的重要性。这是因为外观对功能有深远的影响:一个看起来零乱或
者缺乏逻辑的程序是很难被理解和使用的。美学上的完整性并不是用来衡量您的程序有多漂亮,而是衡量您程序的外观和程序功能结合得有多好。例如,一个效率型
应用程序应尽量精简装饰性的元素并置于背景中,同时使用标准控件和行为以突出任务。沉浸式程序是另一极端,用户期待有趣且需要一些探索的漂亮外观。虽然程
序趋向于提供消遣,但是其外观仍需和其任务结合。仔细设计这类程序的用户界面,从而为用户提供内部一致的用户体验。
设计iPhone应用程序:从产品定义到品牌宣传
当您开发iPhone应用程序时,您需要了解iPhone OS以及移动设备环境的各个方面给您的设计带来的影响。本章涵盖了从产品定义到品牌宣传的一系列程序设计问题的指导方针,并介绍了在iPhone应用程序中是如何解决这些问题的。给出产品定义说明
在开始设计您的应用程序之前,精确定义您的应用程序是用来做什么的非常重要。一个比较好的方法是撰写一份产品定义说明
—
用于描述您的应用程序的主要功能及目标用户的文档。创建产品定义说明不仅仅是一种练习,相反地,它是将一系列产品功能转化成一个清晰完整的产品的最佳方法
之一。首先,花些时间定义您的目标用户:他们是专家还是新手?是严谨的还是随和的?是带着特定任务来寻求帮助还是为了娱乐消遣的?了解这些可以帮助您根据
用户的特殊需求来定制用户体验和用户界面。由于您是在设计一个iPhone应用程序,有一些用户需求是已知的。例如:
然后思考一下,什么样的特性使得您的用户和iPhone
OS的其他用户区分开。他们是商人,青少年还是退休人员?他们是否会在每一天的结束时,或是当他们查收电子邮件时,亦或是当他们有一些额外时间时,使用您
的应用程序呢?您对目标用户定义得越准确,您对用户界面的外观,体验以及功能的设计也就越准确。例如,如果您的应用程序是帮助商务人士记录他们的开支,那
么您的用户界面应该侧重于提供正确的分类,并且易于输入费用,而不是询问许多无关核心功能的细节。另外,您最好为界面选择一种比较专业的颜色,并且不会让
用户产生视觉疲劳。或者,如果您的应用程序是一个以青少年为目标受众的游戏,那么您可能需要一个活泼一点的用户界面,煽动性的语言,时尚一点的色彩。最
后,研究一下您打算提供的产品功能。根据您对目标用户的想象,尝试将一系列产品功能提炼成一份产品定义说明文档,这份文档描述了您的产品所提供的解决方案
以及您的目标用户。例如,
iPhoto桌面应用程序允许用户整理,编辑,共享,打印和查看照片,但一份优秀的产品定义说明不仅仅包括产品的功能,同时还描述了其目标用户。因此,一
份完整的iPhoto产品定义说明可能是“一种为业余摄影爱好者设计的,简单易用的照片管理应用程序。”注意,在产品定义说明中包含您的目标用户定义是多
么重要:想象一下,如果iPhoto被定义为成“一种为专业摄影师提供的,简单易用的照片管理应用程序”,那将有多么不同。一份优秀的产品定义说明就像一
个工具,您应该在整个开发过程中使用它来确定功能,工具和术语的是否合适。尤其重要的是清除那些不符合产品定义说明的元素,因为iPhone应用程序没有
多余空间去支持非核心功能。例如,想象一下,您正在考虑开发一个人们在购买生活用品时可以使用的iPhone应用程序。在计划阶段,您可能需要考虑用户可
能喜欢的许多种不同的活动,例如:
然而,您认为您的用户最关心的是记住他们需要购买的所有东西,尽可能地省钱,并且很可能急于带着采购品回家。根据这些对用户的定义,
您可以为您的应用程序制作一份产品定义说明,比如“为忙碌的人群提供创建购物清单,查找折扣的工具。”通过这份产品定义说明过滤掉产品的潜在功能,您决定
主要侧重于如何使购物清单易于创建,存储和使用。您也为用户提供了查找他们购物清单上所列商品的打折信息的功能。即使其他功能也是有用的(并且可能成为其
他应用的主要功能),但它们不符合这个应用程序的产品定义说明。当您确定了一个可靠的产品定义说明,并且开始使用它来过滤提出的那些功能,您可能还希望用
它来确保最初关于应用程序类型的决定是正确的。如果您在头脑中带着一个具体的应用程序类型开始了您的开发过程,您可能会发现定义产品定义说明的过程已经改
变了其面貌。 ( 关于您所能开发的不同类型的应用程序,请参考“三种应用程序风格”
)优秀iPhone应用程序的共性
优秀的iPhone应用程序精确地满足了用户需求,同时提供了用户想要的体验。为了帮助您在应用程序中平衡这两点,本小节归纳了优秀iPhone应用程序的一些共有特点,并就如何将这些特点融合到您的产品中给予了建议。简单和易用性
简
单和易用是所有软件的基本原则,但在iPhone应用程序中它们尤其重要。iPhone
OS用户很可能在使用您的应用程序的同时,还做着其他事情。如果用户无法快速明白如何使用您的应用程序,他们很可能会转而使用其他竞争者的应用程序,而且
不会再尝试您的应用程序。当您设计应用程序流程以及用户界面时,请遵循如下准则以保证应用程序的简单且易于使用:
以下各小节就简单和易用性的准则进行更详细的说明。显而易见
您不能假设用户有时间(或能够分出注
意力)来研究您的应用程序是如何运作。因此,您必须努力让应用程序能够立刻被用户理解。您的应用程序的主要功能应该一目了然。您可以最大限度地减少用户必
须选择的控件数量,并清晰地标识这些控件以便用户明白它们的功能。例如,在内置的秒表功能中(时钟应用程序的一部分),如图3-1所示,用户一眼就可以看
出哪个是停止按钮,哪个是启动按钮,哪个是用来记录每圈时间。图 3-1
内置秒表功能的用法显而易见
由上而下的布局
用户可以用手指或大拇指点击一个iPhone
OS的设备的屏幕。用户倾向于用他们的非惯用手握住设备(或搁在手心),用惯用手的手指点击设备。当使用大拇指时,人们要么将设备一手握住,然后用大拇指
点击,要么将设备握于双手间,同时用两根大拇指点击。无论用哪一种方式,对于用户来说屏幕最上方都是最显眼的。由于这些使用模式,您在设计应用程序的用户
界面时,应将最常使用的(通常也是重要的)信息置于最明显且最方便的顶部。当用户从屏幕顶部浏览到底部的时候,呈现的信息的过程应该是由一般到特殊,从高
级到低级的过程。最大限度地减少所需的输入
无论用户是点击控件还是使用键盘,输入信息都会占用他们的时间和精力。如果
您的应用程序需要用户在获取有用信息前进行大量输入,这将降低用户效率,并且会妨碍用户继续使用您的程序。当然,您通常需要一些来自用户的信息。但您应该
在用户提供的信息和您反馈给用户的信息之间做出权衡。换句话说,努力为用户提供的每一条信息反馈尽可能多的信息或功能。这样,当用户使用您的应用程序时他
们会感到正在取得进展,并没有被阻塞。当您向用户请求输入时,考虑使用表格视图(或选择器)来代替文本输入框。对用户来说,从一个列表中选择一项通常比输
入单词容易得多。有关表格视图和选择器的细节,请分别参考 “表格视图”
和“选择器”
小节。简洁地表达信息
当
用户界面上的文本简短而又直接的话,用户就能够快速地理解它。因此,简明扼要地表达最重要的信息,并显著地突出该信息,这样用户不必为了所寻找的信息或为
了弄清下一步该怎么做而阅读大段的文字。为了帮助您做到这一点,您可以像一位报纸编辑一样地思考,努力用压缩标题的风格传递信息。为控件加上简短的标签
(或易于理解的符号),以便用户一眼就能了解如何使用它们。为控件提供指尖大小的目标区域
如果您的布局将控件放置得过
于靠近,用户需要花费更多的时间和精力来确定他们点击的区域,并且很容易点错控件。一个简单易用的用户界面应该合理地分配控件和其他用户界面元素,使得用
户能够更方便地点中控件。例如,内置的计算器应用程序显示很大的,易于点击的控件,每个控件的目标区域大约44x44像素。图3-2
展示了计算器应用程序。图 3-2
内置计算器应用程序的控件
将重点放在主要功能上
一个令用户满意且愉快iPhone应用程序应将重点放在它的主要功能上,因此,当您设计应用程序时,要始终将重点放在您的产品定义说明上,并确保每个产品功能和用户界面元素支持这个说明。关于如何创建产品定义说明的相关建议, 请参考“给出产品定义说明”
。
一个比较好的方法是确定在每个上下文中什么是最重要。当您决定要在每个屏幕中显示什么时不断问问自己,这是用户现在需要的关键信息或功能吗?或者,想得更
加具体些,当用户在商场购物或在会议间步行时,这个信息或功能是不是他们需要的?如果不是,那它在另一个不同上下文中是不是重要?或者它终究不是那么重
要?例如,一个帮助用户记录汽车里程数的应用程序不应关心汽车经销商的位置。当您遵照这些准则时,您的解决方案变得更为清晰。特别是,您的应用程序使用起
来更为显而易见,且最小限度地减少了用户输入。集中关注您的解决方案的重点,从而使得用户能更加方便,快速地进入到应用程序中最重要的部分(关于这些准则
的具体内容,请参考“简单和易用性”
)。
例如,内置的日历应用程序(如图3-3
所示)重点在于日期及当天发生的事件。用户可以使用具有明确标签的按钮显示当前日期,选择查看选项,添加事件等。最重要的信息是日期以及与之相关的事件,
也是最显眼的。用户输入也很简单,它允许用户从列表中选择时间,重复间隔以及提醒选项,而不是要求按键输入。图 3-3
内置的日历应用程序重点是日期和事件
有效地沟通
沟通和反馈,在iPhone应用程序中的重要性和在桌面应用程序一样。用户需要知道他们的请求是否正在处理
中,以及他们的行为是否会导致数据丢失或其他问题。尽管如此,避免矫枉过正的沟通也很重要,例如在并非真正严重的情况下提醒用户或过于频繁地请求确认。动
画是一种进行有效沟通的好方法,前提是它不会妨碍用户的任务或影响他们的效率。精细适当的动画可以传递信息,提供有用的反馈,以可视化的方式向用户展示他
们行为的结果。但是过多或无意义的动画会阻碍应用程序的流程,影响其性能,并困扰用户。在所有与用户的基于文本的沟通中,一定要使用以用户为中心的术语,
特别是要避免在用户界面中使用技术术语。例如,在Wi-Fi无线网络偏好设置界面使用清楚的,非技术性的语言来描述如何将设备连接到网络,如图3-4所
示。图 3-4
在应用程序的用户界面中使用以用户为中心的术语
适当的支持手势
人们习惯用手指来操作iPhone
OS设备独特的多点触摸界面,使用如轻敲,摇动,夹等手势来选择,操作,阅读网页内容或使用应用程序。使用手指操作设备其真正的优势在于:手指总是可用
的,它们有能力完成许多不同的动作,并且它们给用户一种直观的,和设备关联的感觉,这是诸如鼠标等外部输入设备无法实现的。然而,手指有一个主要缺点,和
鼠标指针相比,无论是在大小,形状还是灵敏度方面都要差很多。在屏幕的上下文中,手指永远不可能像鼠标指针一样精确。所幸的是,您可以用一个良好的用户界
面设计来弥补手指输入设备带来的挑战。在大多数情况下这意味着您需要确保您的布局可容纳一个指尖的平均大小,同样也意味着您需要响应手指的动作以让用户获
得其期望的行为。用户进行一些特定的动作,从而获得特殊的结果,这种动作称之为手势
。例如,用户点击一个按钮来选中
它,并摇动,或拖拽以滚动一个列表。因为内置的应用程序一致使用,iPhone用户已经习惯了这些手势。因此,您应该在您的应用程序中恰当地使用这些手
势,避免混淆。还有一些更加复杂的手势,如swipe或pinch
open,一样在内置的应用程序中被使用,但它们并不常见。一般来说,这些手势被用作快捷方式来加快完成任务,而不是执行任务的唯一方法。例如,当查看邮
箱中邮件列表时,用户显示消息预览行中的删除按钮并点击它来删除一条正在查看的消息。用户可以用两种不同的方式显示删除按钮:
第一种方法需要一个额外的步骤,但容易被发现,因为它仅仅需要点击已经清楚标识的编辑按钮。第二种方法显然更快,但它需要用户学习并
记住特定swipe手势。因此,为确保您的应用程序易于使用,尽量使用常见的那些手势中,如点击,拖拽等。您应该避免将诸如swipe或pinch
open等不常见的手势作为执行一个动作的唯一方法。您的应用程序应该有一个简单直接的方法来执行一个动作,即使它意味着多点击几次。在大多数应用程序
中,避免定义新的手势同样很重要,特别是这些新手势所执行的动作已经和标准手势想关联。一个例外是沉浸式的应用程序,在这种应用中可以适当地加入自定义的
手势。例如,一个效率型应用程序要求用户作出画圈手势来在一个表格行中显示删除按钮,这样的应用程序将是混乱的且难于使用的。但另一方面,一个游戏要求做
出画圈的手势来转动游戏的某部分就显得比较合理。表3-1列出了用户可以使用的标准手势。不要试图重新定义这些手势的含义;相反地,如果您的应用程序中支
持这些行为,请确保也能够支持与之对应的手势。了解更多有关如何处理由手势产生的事件,请参考iPhone应用程序编程指南
。表3-1
用于和iPhone OS设备交互的手势
慎重地融合品牌元素
当品牌的设计巧妙且简约时,它是最有效的。用户使用您的iPhone应用程序来完成某项任务或娱乐
时,他们不希望产生被强迫观看广告的感觉。因此,您应该以一种低调的方式引入您的品牌的颜色或图片。例如,您可以在视图和控件中使用一个自定义的配色方
案。应用程序图标是例外情况,它应该突出显示您的品牌(应用程序图标是用户在安装完应用程序后,在主屏幕中可以看到的图标),用户会经常看到这个图标,因
此,花费点时间让您的品牌更吸引眼球是有必要的。关于如何设计一个应用程序图标,请参考“应用程序图标
。
处理常见任务
如果您具有使用桌面计算机或便携式计算机应用程序的经验,那么您会发现iPhone应用程序处理很多常见任务的方式与它们不同。本节从人机界面的角度描述了这些常见任务;关于代码实现的技术细节,请参考iPhone应用程序编程指南
。启动
iPhone应用程序应能够迅速启动,从而用户可以立即开始使用它们。启动时,iPhone应用程序应该:
iPhone应用程序不应该直接通过代码退出,因为这样做会使用户觉得应用程序崩溃了。但是,可能有些时候,外部环境会阻止您的应用
程序正常运行。处理这种情况的最好方法是让屏幕显示醒目的内容,在屏幕上描述该问题并向用户提出解决问题的建议。这样做会在以下两方面对用户有所帮助:
如果在一些特定的环境中,您的应用程序只是部分功能无法正常工作,那么在用户想要激活该功能时,您可以在屏幕上显示信息或警告。虽然警告在设计上不具备太大的灵活性,但如果您可以保证以下几点,它也可以成为一种很好的选择:
和所有的警告一样,用户越少看到它们,就说明它们越有效。关于创建警告的更多信息请参考“使用警告”
。管理设置或配置选项
iPhone
应用程序可以向用户提供设置功能,使用户可以根据自己的喜好来设置应用程序行为或配置选项,从而改变应用程序的一些功能。可设置的应该是一些用户设置一次
后很少(如果有的话)改变的信息,比如帐户名称。用户可以在内置的“设置”程序中查看特定应用程序的设置。配置选项是一些用户可能想要经常改变的值,比如
在列表中显示的分类的类型;配置选项应该由应用程序本身提供。您应该把设置和配置选项看作是互斥的。也就是说,您不应该在您的应用程序中同时提供设置和配
置选项。iPhone应用程序最好不要求用户指定任何设置。这样用户无需提供设置信息就可以立即使用这些应用程序。为了在您的应用程序中实现这一点,您可
以采用以下这些设计决策:
如果用户想要打开“设置”程序,就必须首先退出您的应用程序,而您应该不鼓励用户采取这样的行为。系统并没有提供支持这一行为的图标或控件,而且建议您也不要为此创建自定义的图标或控件。如果您决定一定要在您的iPhone应用程序中提供设置,请参考iPhone应用程序编程指南
中的“设置程序包”一节,了解如何在您的代码中实现对这些功能的支持。注意:
应用程序特定的设置不应该包括用户帮助的内容。
与设置不同,由于用户会选择从新资源或以不同布局来查看信息,因此配置选项很可能经常发生改变。对于这些选项所做的更改,您可以动态地作出响应,因为用户
不需要离开您的应用程序来访问它们。您可以在主用户界面或屏幕的背面提供配置选项。具体使用哪一种技术更合理取决于该选项代表的是不是主要功能以及用户对
其进行更改的频率。例如,“日历”程序允许用户以日,星期和月为单位查看他们的时间表。这些选项本来可以在屏幕的背面提供给用户,但是查看日历的不同部分
是程序的主要功能,并且用户可能会频繁改变所关注的焦点。再举一个例子,“天气”程序的主要功能是显示一个城市的当前天气状况和6天之内的天气预报。虽然
让用户能够选择是以摄氏还是华氏为单位显示温度也很重要,但是用户不太可能经常改变这个选项,因此,将它放在主用户界面中并不合理。在“天气”屏幕的背面
提供温标选项,就显得既方便又不突兀。支持复制和粘贴
iPhone
OS提供了编辑(或粘贴板)菜单,它支持在文本视图,Web视图和图像视图中的“剪切”,“复制”,“粘贴”,“选择”和“全选”操作。一种向用户显示该
菜单的方法是,首先用户触摸并按住设备屏幕直到出现放大的视图(该视图允许用户将插入点或选择点移动到正确的位置),然后放开。如果当前的上下文支持这种
菜单,则当用户抬起手指时它就会出现。菜单中的“选择”操作可以选择视图中的单词或应用程序定义的项。用户可以通过拖动当前所选区域的把手来扩大他们选择
的内容。在内容被选中之后,菜单就会根据情况显示“剪切”,“复制”或“粘贴”。您可以调整编辑菜单的某些行为以适应您的应用程序。(要了解更多关于如何
用编码实现这些行为的信息,请参考iPhone应用程序编程指南
中的“复制和粘贴操作”一节。)例如,您可以指定菜单中显示的操作,您可以
改变菜单出现的位置。但是,您不能控制菜单本身的颜色和形状。编辑菜单中可见的操作在当前上下文都是有意义的。例如,如果没有任何内容被选中,菜单中不会
包含“复制”或“剪切”操作,因为这些操作要作用于被选中的内容。同样,如果有内容被选中,菜单则不包含“选择”操作。如果您要在一个自定义视图中支持编
辑菜单,您应该确保菜单所显示的操作适用于当前上下文。请注意,您不能在菜单中显示自定义的操作。UIKit会根据可用空间的大小,在插入点或被选中内容
的上方或下方显示编辑菜单,并放置菜单指针,以便用户可以看到菜单操作是如何与当前内容相关联的。您可以通过编程的方式,在菜单出现之前决定它的位置,因
此,在必要的情况下,您可以防止应用程序的用户界面中的重要部分被菜单遮住。请注意,虽然“触摸并按住”这个操作是向用户显示编辑菜单的主要方式,但是用
户也可以通过双击文本视图中的一个单词来选中它,同时显示出菜单。如果您要在自定义视图中支持菜单,那么您应该对这两种操作都做出响应。此外,您可以定义
在用户双击时默认被选中的对象。如果一个按钮执行的是编辑菜单中已有的操作,则要避免创建这样的按钮。例如,要让用户执行复制操作的话,使用编辑菜单比向
用户提供“复制”按钮更好,因为用户会很困惑,为什么在您的应用程序中要有两种方式来完成同样的事情。您可以启用对静态文本的选择,但是应该仅当静态文本
显示对用户有用的内容时才这样做。例如,用户有可能想要复制一幅图像的标题,但是他们可能不想复制一个标签项或屏幕标题的标签,比如“帐户”。在文本视图
中,默认应该是按单词选取的。按钮的标题应该是不可以被选中的,因为很难不触发按钮的点击事件并显示出编辑菜单。一般来说,具有按钮行为的元素不需要被选
中。如果您在自己的应用程序中支持“剪切”,“复制”和“粘贴”操作,您也应该支持撤销和重做(在“支持撤销和重做”
介绍)。这是因为编辑菜单不需要在动作执行前进行确认,而且如果用户改变了主意,他们总是希望能够撤销最近的操作。支持撤销和重做
iPhone
OS在文本视图中为用户提供了撤销和重做的能力。用户通过摇晃设备发起撤销动作,设备会显示一个警告,允许用户撤销他们刚才的输入,重做先前未完成的输入
或取消撤销操作。UIKit允许您在自己的应用程序中以一种更通用的方式支持撤销(有关如何在代码中实现这一行为的信息,请参考撤销架构
)。您可以指定:
为了给您的应用程序中的撤销和重做功能提供出色的用户体验,您应该:
启用推送通知
当您的应用程序注册了“苹果推送通知服务”时,您可以在有新数据到来时向用户发出警告,即使您的应用程序没有运行。当设备收到的消息是发给一个没有运行的应用程序时,它可以通过以下方式通知用户:
或者您可以组合使用以上方式。用户的反应可能是启动应用程序来处理新数据,或者仅仅是注意到有新数据到来就可以了。(要了解如何在代码中处理推送通知,请阅读苹果推送通知服务编程指南
。)
保证应用程序的可用性
一个易于使用的应用程序应该允许有障碍的用户在辅助程序或设备的帮助下可以
成功使用。iPhone
OS设备包含许多功能,使所有用户都可以更加方便地使用该设备,比如可视化语音邮件,缩放以及语音控制功能。您无需在应用程序中采取任何动作,用户可以直
接获益于这些功能。有了VoiceOver,事情就变得不一样了。VoiceOver是苹果公司一项创新性的屏幕阅读技术,它让用户无需看到屏幕,就可以
控制他们的设备。为了确保VoiceOver用户可以充分地使用您的应用程序,您可能需要提供一些关于用户界面中视图和控件的自定义信息。幸运的是,在默
认情况下,UIKit控件和视图是易于访问的,因此,当您以完全标准的方式使用这些标准元素时,您只有很少的额外工作要做(如果有的话)。用户界面的自定
义程度越高,您需要提供的自定义信息就越多,以便VoiceOver可以正确地向具有视觉障碍的用户描述您的应用程序。
虽然实时过滤数据通常能够产生出色的用户体验,但这并不总是可行的。如果无法实时过滤数据,您可以在用户在键盘上点击“搜索”按钮之
后再开始搜索过程。如果您要这样做,一定要提供有关搜索进度的反馈信息,以便让用户知道搜索进程没有停止。一种方法就是尽快显示文本结果,并为那些可能需
要更长时间检索的数据显示占位符内容。例如,在YouTube中,用户点击“搜索”按钮发起视频的搜索。如果网络连接速度很慢,YouTube会先显示
“载入中……”消息和旋转的活动指示符,让用户知道搜索正在进行。然后,YouTube会显示一个结果列表,其中,每一行填写搜索的文本结果(比如视频的
标题和收视率),以及带有虚线轮廓的立方体自定义图像。随着用户浏览视频标题的列表,下载完的视频缩略图会逐步替换掉原来的虚线立方体。像这样,在更多的
数据仍在下载时向用户显示部分搜索结果,能够及时地为用户提供有用的信息。如果您处理的数据可以归类于多个不同的类别,您可以提供一个范围栏。范围栏包含
至多4个范围按钮,每个按钮代表一种分类。例如,“邮件”程序提供了一个范围栏,允许用户将他们的搜索集中在邮件的发件人,收件人或主题字段,或者将搜索
范围扩大至包含所有的字段。如果范围栏能够帮助用户集中他们的搜索,或者能够大大减小搜索结果的数量,请您考虑使用范围栏控件。(要了解如何在您的代码中
实现范围栏,请参考UISearchBar类参考
。)使用用户的位置信息
用户喜欢能够自动使用他们的物
理位置对内容进行标记的功能,或者查找当前在附近的朋友。用户同时也希望当他们不想与他人分享自己的位置时能够禁用这些功能。用户可以通过“设置”
>
“一般”中的“位置服务”设置来选择同意(或拒绝)系统范围内对他们的物理位置的访问。如果用户关闭了位置服务,而随后使用的应用程序功能需要获知他们的
位置,则用户会看到一个警告,此警告告诉他们必须改变他们的首选项设置才能使用此功能。该警告不允许用户在应用程序的内部做此更改;相反,他们必须进入设
置应用程序改变他们的首选项设置。这样可以确保用户充分意识到他们正在授予整个系统使用他们位置信息的权限。为了让用户知道他们为什么要打开位置服务,您
最好只在用户试图使用一项显然需要获知他们当前位置的功能时,才显示警告。例如,当位置服务关闭时,用户仍然可以使用地图应用程序,但是,当他们访问发现
并跟踪其当前位置的功能时,会看到警告。如果位置服务处于关闭状态,iPhone OS会在您的应用程序第一次试图访问位置信息时显示警告。Core
Location框架为您提供了一种获取用户偏好设置的方法,使您避免不必要或不适当地触发警告。(要了解关于这个编程接口的更多信息,请参考Core Location框架参考
。)知道了用户的偏好设置信息,您就可以尽可能准确地为需要位置信息的功能触发警告,或是完全地消除警告。
处理方向的变化
用户可以随时旋转iPhone OS设备,并且他们期望正在浏览的内容做出适当的调整。在您的iPhone应用程序中,请务必:
使用声音
用户期望iPhone
OS设备具有非常美妙的声音,无论是操作系统的声音(比如铃声和警告声),还是应用程序的声音(比如媒体播放,环境声音和配乐)。此外,用户还希望设备发
出的声音能够遵从他们的偏好和目的。用户决定声音的音量,以及他们是否想要听到这些声音。但是有些时候,即使当前的设置表明用户更倾向于静音,他们还是希
望听到某些声音。例如,用户总是期望听到他们设置的警告声。从本质上讲,用户想要听到他们期待听到的声音,而不愿听到他们不期待的声音。为了帮助您顺应这
样的需求,iPhone OS提供了一些编程接口,您可以用来:
在您决定如何处理应用程序中的声音之前,您需要了解,当用户调整设备控件和使用外部设备(如耳机和耳麦)时,他们期望应用程序和设备如何运作。振铃/静音切换—用户的期望
如果用户希望做到以下几点,他们可以使用“振铃/静音”切换将他们的设备静音:
例如,在剧场中,用户会将他们的设备切换至静音状态,以免打扰到剧场中的其他人。在这种情况下,用户仍然想要使用他们设备上的应用程序,但他们不想被不期望的或没有明确要求的声音吓到,比如铃声或新消息提示音。但是,对于旨在产生声音的用户动作,“振铃/静音”切换不
会消除它们产生的声音。例如:
这种行为遵循用户控制的原则,因为是由用户(而不是设备)来决定听到用户明确请求的声音是否合适。音量按钮—用户的期望
用
户使用设备的音量按钮来调节设备播放的所有声音的音量,包括歌曲,应用程序的声音和设备的声音。这意味着用户可以随时使用音量按钮关闭任何声音,无论“振
铃/静音”切换的当前状态如何。在某些情况下,应用程序适宜在其界面为用户提供音量设置功能。例如,YouTube显示了一个音量滑动器,用户可以用它调
整正在观看的视频的音量。尽管YouTube正在运行,用户可以交替使用此滑动器和音量按钮来调整视频的音量。这是因为在应用程序运行时,滑动器起到音量
按钮代理的作用:滑动器同时作用于应用程序的音量和整个系统的音量(铃声音量除外)。如果您需要显示音量滑动器,当您使用MPVolumeView类时一
定要使用系统提供的滑动器。请注意,如果当前激活的音频输出设备不支持音量控制(比如A2DP设备),音量滑动器将被相应的设备名称取代。使用音量按钮调
整应用程序当前播放的音频,也会同时调整整个系统的音量(铃声音量除外)。(在当前没有播放任何音频时,使用音量按钮调整铃声的音量。)这种行为遵循用户
控制的原则,因为用户可以随时决定设备发出的声音应该有多大。有时候,应用程序可能需要调整相对和绝对音量级,以便在其音频输出中产生最佳的混合。但是,
最终的音频输出的音量应该始终受到系统音量的控制,无论它是通过音量按钮还是音量滑动器进行调整的。这就意味着,对应用程序音频输出的控制仍然掌握在它所
归属的用户的手中。耳机和耳麦—用户的期望
用户插入耳机和耳麦就可以获得私人的声音体验并且解放他们的双手。在使用和
不使用附件的情况下,用户对应用程序的行为有着不同的期望。当用户插入耳机和耳麦时,他们是打算继续听当前的声音,只是转为私下收听。因此,他们希望当前
正在播放音频的应用程序继续播放此音频。当用户拔下耳机和耳麦时,他们不想自动将正在收听的内容分享给他人。因此,他们希望当前正在播放音频的应用程序暂
停播放,让他们准备好之后显式地重新开始播放。无线音频—用户的期望
用户非常喜欢无线耳机的便捷,比如蓝牙A2DP设备。人们使用无线耳机和耳麦的理由与使用有线耳机和耳麦的理由是一样的:他们想要私下听到声音,并希望解放他们的双手。用户对无线耳机的用户体验也有着非常类似的期望:
即使用户没有实际地插入或拔出无线音频设备,他们仍然希望能够选择一个不同的音频通道。为了解决这个问题,iPhone OS自动显示了一个控件,让用户选择音频输出路线。由于选择不同的音频通道是用户发起的动作,所以用户希望正在播放的音频继续播放。定义应用程序的音频行为
如果声音能够增强用户体验或应用程序的功能,或者是用户体验或应用程序功能必不可少的一部分,您需要决定您的音频应该如何与设备的音频环境保持一致,以及应该如何响应用户的动作。例如,你需要决定:
要控制应用程序的音频在这些情况下应该如何表现,请使用“音频会话服务”或AVAudioSession类。这些编程接口不能产生声
音;它们可以帮助您说明您的音频应该如何与设备上的音频进行交互,以及如何响应中断和设备配置中的变化。音频会话服务管理采用AV基础框架,音频队列服
务,OpenAL和I/O音频单元等技术产生的声音。
小结
下面是一些场景,它们说明了如何选择音频会话类别,以提供用户期望的音频体验。场景 1
.
假设您正在开发一个教育应用程序,帮助人们学习一门新的语言。您需要提供在用户点击特定控件时播放的反馈声音;并提供在用户想要听到正确的发音示例时播放
的单词和短语的录音。在这个应用中,声音对于应用程序的主要功能来说是必不可少的。人们使用该应用程序,收听他们所学语言中单词和短语的发音,所以,即使
当“振铃/静音”切换设置为静音或设备锁定时,也应该播放应用程序的声音。由于用户需要清楚地听到发音,因此,他们希望其他正在播放的音频被静音。为了产
生用户期望的音频体验,您应该使用Playback类别。虽然您可以改进这一类别,以便与其他音频(如表4-1
中所述)进行混合,但是这个应用程序应该使用默认的行为,以确保其他音频不会与用户明确选择要收听的学习内容发生竞争。场景 2
.
假设您正在开发一个游戏,让用户控制屏幕上的人物完成许多不同的任务。您需要提供各种各样的游戏音效和一段游戏配乐。在这个应用中,声音会大大提升用户的
体验,但它并不是主要任务必不可少的一部分。此外,用户很可能希望能够在静音状态下玩游戏,或者一边听音乐库中的歌曲(而不是游戏的配乐)一边玩游戏。最
好的策略是,要了解当您的应用程序启动时用户是否正在收听其他音频。不要让用户选择是否想要听其他的音频或您应用程序的配乐。相反,要使用“音频会话服
务”的AudioSessionGetProperty功能,查询kAudioSessionProperty_OtherAudioIsPlaying
属性的状态。根据查询的结果,您可以选择Ambient类别或Solo Ambient类别(这两个类别都允许用户在静音状态下玩游戏):
场景 3
.
假设您正在开发一个应用程序,为用户提供准确,实时的到达所选目的地的导航指示。您需要为行程中的每一步提供语音指导,以及一些反馈声音。此外,您认为用
户希望在使用应用程序的同时,能够听到他们自己的音频。在这个应用中,语音导航指示代表了程序的主要任务。基于这个原因,您应该使用Playback类
别,它让您的音频在设备锁定或“振铃/静音”切换设置为静音时仍能播放。为了让人们在使用您应用程序的同时,收听其他的音频,您可以添加
kAudioSessionProperty_OverrideCategoryMixWithOthers属性。但是,您也想要确保用户可以在当前正在
播放的音频之上,听到应用程序的语音指令。要做到这一点,您可以将
kAudioSessionProperty_OtherMixableAudioShouldDuck属性应用到音频会话。这可以确保您的音频比目前播
放的所有音频(除了电话音频)更加响亮。场景 4
.
假设您正在开发一个博客应用程序,允许用户向中心网站上传他们的文字和图片。您可能有一个简短的启动声音文件,各种各样简短的声音效果(比如当用户完成上
载时播放的声音),以及当上载失败时播放的警告声音。在这个应用中,声音会提升用户的体验,但它只是附加的。程序的主要任务与音频无关,用户不需要听到任
何声音,也能成功使用该应用程序。在这种情况下,您可以使用“系统声音服务”产生声音。这是因为应用程序中所有声音的音频上下文都符合这一技术的目的,也
就是要产生用户期望的,遵从设备锁定和“振铃/静音”切换的用户界面音效和警告声音。提供选项
iPhone
OS包含一些帮助用户做出选择的元素。当您需要在应用程序中提供选项时,您应该使用这些选择方法,因为用户已经熟悉了它们的行为。一般来说,您不应该试图
复制在桌面计算机应用程序中看到的选择控件的外观和行为,比如应用程序菜单或一组单选按钮。iPhone
OS提供了以下元素,您可以用来向用户提供选项:
提供许可协议或免责声明
如果您随同iPhone应用程序提供了终端用户的许可协议(或
EULA),App
Store会显示该协议,以便用户在使用您的应用程序之前可以阅读它。如果可能的话,尽量避免要求用户在第一次启动您的应用程序时,表示他们同意您的终端
用户许可协议。这样用户能够立即享用您的应用程序。但是,即使这是首选的用户体验,它可能无法在所有情况下都行得通。如果您必须在您的应用程序中显示许可
协议,请尝试采用一种与您的用户界面相一致的方式,这样可以将给用户造成的不便降到最低。同样,如果您需要提供免责声明,一定要平衡好业务需求与良好的用
户体验。如果可以的话,在您的应用程序描述或EULA中提供您的免责声明,以便它可以用在App Store中。
设计您iPhone应用程序的用户界面
iPhone OS中的用户界面元素包括视图和控件。视图
是提供了良好定义的功能集合的内容区域。控件
则是能够触发即时动作或可视化结果的图形对象。虽然一个应用程序的所有视图和控件都包含在同一个应用程序窗口中,用户却是根据它们不同的可见状态在屏幕
中与之交互的。iPhone OS定义了这些用户界面元素的标准外观,并提供了用户所期望的行为。第二部分中的章节能够帮助您了解可用的用户界面元素的类型以及如何在您的应用程序的用户界面中使用它们。
用户界面概述
在深入研究视图和控件的具体细节之前,先对这些元素在一起工作的
方式以及用户期望的行为有一个较高层次的理解,对您来说大有裨益。本章将介绍构成大多数应用程序的各种视图,帮助您了解它们的具体信息以及如何使用它们。
想要详细了解每一个用户界面元素的外观,行为和使用指南,请务必阅读本章后面的章节。理解每个用户界面元素是如何针对它的用法进行设计的,能够帮助您在应
用程序中正确地使用它,并在适当的情况下根据您的需要定制用户界面元素。应用程序的屏幕及其内容
无论是什么类型的应用
程序,都有一个应用程序窗口,该窗口为您提供了一个能够呈现应用程序的所有信息的背景。但是用户对这个窗口没有概念,他们对应用程序的体验来自屏幕上的画
面,并且用户通过屏幕对应用程序进行操作。虽然不是一个程序中的结构,但是您仍可以认为每个屏幕对应于应用程序的不同的可视化状态或模式。当用户浏览信
息,切换标签页,或者点击“信息”按钮查看侧边弹出的配置信息时,他们看到的是各个独立的屏幕。取决于程序的类型,您的应用程序的屏幕可能有多有少。例
如,邮件应用程序可以显示一个帐户屏幕,各个帐户中的邮箱列表屏幕,各个邮箱内容的屏幕和显示一条消息的屏幕,还有一个写邮件的屏幕。然而,股票应用程序
只显示两个屏幕:一个屏幕显示公司列表和股票走势图,另一个屏幕显示应用程序的配置信息。通常,用户会把应用程序屏幕和设备屏幕当成是一回事。然而,应用
程序屏幕的内容可能会超出设备屏幕的边界,这就需要用户滚动屏幕。例如,电话应用程序中的联系人只有一个单独屏幕,即使它的内容是设备屏幕的好几倍。应用
程序的屏幕可以包含各种各样的视图和控件的组合。某些视图会包含一些特定的控件,而有些控件可以用于很多不同的视图当中。告警,动作表单和模式视图和普通
视图不同,普通视图一般存在于应用程序的屏幕中,而它们浮动于应用程序的屏幕及其视图之上。更多有关这些视图的信息请参考“告警,动作表单和模式视图”
。下面四种类型的视图在应用程序的用户界面中具有特殊的地位,但是它们并不需要在每个应用程序中被包含或总是可见。
图5-1在一个应用程序屏幕中显示了这些视图中的三种。请注意,如果该应用程序使用工具栏,它将出现在图中的标签栏处。图 5-1
一个包含状态栏,导航栏和标签栏的应用程序屏幕
在一个能够显示这四种视图的组合的应用程序中,您可以将导航栏底部到工具栏顶部之间的区域视为内容区
。在该区域中,应用程序屏幕可以包含任意视图来显示内容,如表视图,web视图和图像视图。图5-2显示了两个在iPhone操作系统中可用的内容区视图:表视图的一种和图像视图。请参阅“表视图,文本视图和Web视图”
以了解更多有关这些视图的行为和外观,以及与其相关的控件。图 5-2
两种类型的内容区视图
正如上文说过的那样,有一些控件只能在特定的视图中使用。显示提示符控件就是这样的一个例子,它在表视图中具有特殊用法。您可以在图8-1
中的左边的列表中看到显示提示符(它看上去像是一个大于号>)。在介绍其相应视图的小节对这些控件有具体描述,但是,需要补充一点,也有少量控件(如详细显示提示符)具有更广泛的用途。请参阅“应用程序控件”
来获得更多控件相关的信息。在应用程序屏幕中使用视图和控件
在iPhone OS中,UIKit决定了视图以及控件的行为和默认外观。您应该尽可能地使用UIKit提供的标准用户界面元素,并遵循它们的使用建议。这样做对您最主要的好处有两点:
许多控件支持某种程度上的用户自定义,通常是颜色或内容(比如添加一个文本标签或一幅图像)方面。如果您想要开发一个能使用户沉醉其
中的应用程序,一个好的做法是,您所创建的控件完全不同于默认控件。这是因为您创造了一个独特的环境,而去探索如何操控这个环境正是用户在优秀的应用程序
中所期待的体验。然而,一般来讲您应该避免彻底改变标准行为控件的外观。如果您使用用户不熟悉的控件执行标准行为,则用户不得不花时间熟悉如何使用它们,
并且好奇这些控件具有哪些(哪怕只有一丁点)标准控件不具备的功能。
导航栏,标签栏,工具栏和状态栏
状态栏,导航栏,标签栏和工具栏在
iPhone应用程序中具有特别定义的外观和行为的视图。它们不需要在每个应用程序中都出现(在那些令人惊叹的应用程序中经常是一个也不出现),不过一旦
决定让它们出现在应用程序中,就一定要正确地使用这些视图。原因在于使用iPhone
OS设备的用户都熟悉它们所提供的功能,对它们显示的信息和执行的功能类型早已习惯。状态栏
状态栏显示与用户设备相关的重要信息,包括电话信号强度,当前网络连接和电量信息。图6-1显示了一个状态栏的例子。图 6-1
一个包含用户所需的重要信息的状态栏
尽管一个全屏的应用程序可以隐藏状态栏,但是您应该仔细考虑这一设计方案。人们总是希望可以看到当前设备的电量;隐藏这一信息,会迫使用户需要退出您的应
用程序才能获取电量信息,这可不是一种理想的用户体验。例如,照片应用程序以全屏幕视图显示相机中的各个照片时,会在几秒钟之后渐渐隐去状态栏,导航栏和
工具栏。这种做法是很恰当的,因为在照片应用程序中,用户仅仅关注照片的内容,而并不与应用程序进行交互。但是,用户可以通过轻轻点击屏幕,让状态栏,导
航栏和工具栏重新显示出来。如果您想要不时地在应用程序中隐藏状态栏,那么您应该使得用户能够通过单击屏幕重新获得状态栏。除非您有非常令人信服的理由,
否则最好避免用自定义的方式来重新显示状态栏,因为用户未必会发现或记住这样的方式。虽然您难以控制状态栏的内容,但是您可以定制它的外观,并在一定程度
上定制它的行为。具体来说,您可以:
图 6-2
状态栏的三种样式
请确保状态栏的外观与您的应用程序的其余部分能够协调搭配。例如,如果导航栏是不透明的,就要避免使用半透明的状态栏。导航栏
导航栏位于应用程序屏幕的上边缘,在状态栏之下。导航栏通常会显示当前视图的标题,包含导航控件,并在适当的情况下也可以包含作用于视图内容的控件。在效率型应用程序(详见“
效率型应用程序
”
)中,导航栏非常有用,因为这些应用程序通常会按照层次结构显示信息。导航栏有两种用途:
图 6-3 显示了这两种用途的示例。图 6-3
包含导航控件和内容管理控件的导航栏
导航栏的内容
导航栏可以根据当前视图标题的宽度居中显示标题,如图6-4所示。效率型应用程序中的初始视图应该包含一条导航栏,上面只需显示第一个视图的标题,这是因为用户还没有切换到其它位置。图 6-4
显示当前视图标题的导航栏
一旦用户切换到另一个视图,导航栏就应该将它的标题更改为新视图的标题,并且应该提供一个返回按钮,标记为先前视图的标题。例如,图6-5显示了“日期和时间”设置中的导航栏,该设置属于“常规”设置视图中的一部分。图 6-5
包含导航控件的导航栏
标准的返回按钮为用户提供了一种返回到先前屏幕的可靠方式,所以一定不要改变该按钮的行为。特别地,您应该避免创建多段的返回按钮,比如图6-6中所示的按钮。图 6-6
不推荐多段的返回按钮
使用多段的返回按钮会引起以下列问题:
如果您认为没有多段返回按钮的帮助来显示路径,用户可能会感到迷惑,那么这也就意味着用户必须浏览很深的信息层次才能找到他们所需要
的内容。为了解决这个问题,您应该尽量将信息层次扁平化。除了返回按钮之外,导航栏还可以在标题的右侧包含另一个按钮。如果您不需要显示返回按钮(由于您
的应用程序不支持分层导航),您也可以选择在标题的左侧显示一个作用于视图内容的按钮,比如“编辑”按钮。图6-7显示了这样的一个例子。图 6-7
包含用于管理视图内容的控件的导航栏
要了解如何在您的应用程序中实现导航栏,请参考“导航控制器”
。
正如您在上述示例中所见,导航栏上的按钮周围有一圈带边角的框。在iPhone
OS中,这种样式被称为边框样式。导航栏的所有控件都要使用边框样式。事实上,即使您在导航栏上放置一个无格式(没有边框)的控件,它也会自动转换为有边
框的样式。您可以设计自己的图标用作导航栏的按钮,或者您也可以利用iPhone OS提供的预定义按钮。关于您可以使用的按钮相关的更多信息,请参考“用于工具栏和导航栏的标准按钮”
。虽然您可以为所有在导航栏中显示的文本指定字体,但为了可读性,推荐您使用系统字体。当您使用适当的UIKit编程接口创建导航栏时,其标题将自动采用系统字体来显示。导航栏的尺寸和颜色
当
设备的方向由纵向变为横向时,导航栏的高度也会自动随之改变(您不应该通过编程的方式指定它的高度)。设备处于横向时,窄一点的导航栏可以为屏幕上的内容
留出更大的空间。您在设计导航栏控件的图标和设计屏幕上的布局时,一定要将这种高度上的差异计算在内。您可以指定导航栏的颜色和半透明效果,以和您的应用
程序的整体外观以及其它栏目(即工具栏,标签栏和状态栏)一致。您可以使用自定义颜色或选择下列标准颜色中的一种:
如果能对您的应用程序的外观有所帮助,您还可以为导航栏添加半透明效果。当您使用半透明的导航栏时,屏幕会给人感觉具有更大的可视区
域,这在设备横向放置时效果非常理想。一定要避免将半透明的导航栏和黑色不透明的状态栏混合使用(然而半透明的导航栏可以同灰色不透明的状态栏一起显
示)。导航栏的外观要力争与应用程序中的其它栏目的外观保持一致。例如,如果您使用半透明的导航栏,就不要将它与不透明的工具栏一起使用。此外,请避免在
同一方向的不同屏幕中改变导航栏的颜色或半透明效果。工具栏
如果您的应用程序为用户提供了一系列可在当前上下文中执行
的动作,那么您可以为用户提供一个工具栏。工具栏位于屏幕的下边缘,它包含若干按钮,这些按钮用于执行与当前视图中的对象相关的动作。工具栏不是用来切换
应用程序的不同模式的。如果您需要这样做,您应该使用标签栏而非工具栏(更多信息请参考“标签栏”
)。
例如,当用户在邮件应用程序中查看消息时,应用程序提供了一个工具栏,除了查收新邮件和撰写新邮件之外,工具栏中还包含了用于删除,回复和移动消息的项。
通过这样的方式,用户即使停留在消息查看的上下文环境中,也仍然可以使用他们所需的命令来管理他们的电子邮件。图6-8显示了这个场景。图 6-8
当前上下文下提供功能的工具栏
工具栏的内容
工具栏在其宽度范围内等距离地显示工具栏上的项。对于工具栏上显示的项,最好对其数目加以限制,这样用户
可以轻松地点击到他们所需的项。我们向您推荐的用户界面元素的点击区域为44 x
44像素,因此,为用户提供五个以下的工具栏项是比较合理的。图6-9中的例子向您展示了一个各项间距适中的工具栏示例。图 6-9
间距适当的工具栏
图6-8
和图6-9中的项都没有边框。在iPhone OS中,这种样式叫做无格式样式。(关于边框样式的例子请参考图6-7
。)虽然您既可以在工具栏中使用带边框样式的按钮,也可以使用无格式按钮,但是您不要将这两种样式在同一工具栏中混合使用。您可以为工具栏按钮自行设计图标,或者您也可以充分利用iPhone OS提供的预定义按钮。(关于可以使用的按钮的更多信息,请参考“用于工具栏和导航栏的标准按钮”
。)如果您选择创建自定义的工具栏按钮,请尽可能保持它们的尺寸相近,以获得均匀而又不失吸引力的外观。工具栏的尺寸和颜色
当
设备的方向由纵向变为横向时,工具栏的高度也会自动随之改变(您不应该在程序中指定它的高度)。设备处于横向时,窄一点的工具栏可以为屏幕上的内容留出更
大的空间。您在设计工具栏按钮的图标和设计屏幕上的布局时,一定要将这种高度上的差异计算在内。您可以指定工具栏的颜色和半透明效果,以和应用程序的整体
外观以及其它栏目(即导航栏,标签栏和状态栏)一致。您可以使用自定义颜色或选择下列标准颜色中的一种:
如果能对您的应用程序的外观有所帮助,您还可以为工具栏添加半透明效果。当您使用半透明的工具栏时,屏幕会给人感觉具有更大的可视区
域,这在设备横向放置时效果非常理想。工具栏的外观要力争与应用程序中的其它栏目的外观保持一致。例如,如果您使用半透明的工具栏,就不要将它与不透明的
导航栏一起使用。此外,请避免在同一方向的不同屏幕中改变工具栏的颜色或半透明效果。标签栏
如果您的应用程序为同一组
数据提供了不同的视图,或者与应用程序的整体功能相关的不同子任务,您可能会想要使用标签栏。标签栏出现在屏幕的下边缘。标签栏使用户能够在应用程序的不
同模式或不同视图之间进行转换,并且用户应该能够从应用程序的任何地方进入这些模式。但是,标签栏绝不应该被当做工具栏使用,区别在于工具栏上的按钮是对
当前模式下的元素起作用的(有关工具栏的更多信息请参考“工具栏”
)。
例如,在iPhone中,iPod使用了播客,艺术家,视频和播放列表等标签栏,使得用户能够在他们的媒体收藏中选择他们所关注的部分。另外,时钟应用程
序也使用了标签栏,让用户访问该程序的四项功能,即“世界时钟”,“闹钟”,“秒表”和“计时器”。图6-10显示了在标签栏中选择标签是如何改变时钟程
序的视图的。请注意图6-10中的标签栏,在时钟应用程序的不同模式中是如何保持始终可见的。这使得用户能够很容易地看到他们正处于哪种模式,并且不论当
前处于哪种模式都能访问时钟应用程序的所有模式。图 6-10
使用标签栏切换应用程序视图
标签栏使用标签显示图标和文本,这些标签的宽度一致,并且都以黑色为背景。当一个标签被选中时,它的背景变亮,标签中的图像也会高亮显示。图6-11显示了这一场景。图 6-11
标签栏中被选中的标签
注意:
不管设备的方向如何变化,标签栏不会改变它的不透明性和高度。
iPhone OS为标签提供了一系列图标,比如像图6-11中“功能”和“书签”标签项那样的图标。如果您选择使用这些图标,请确保对它们的使用符合图标所表达的意思。关于您可以使用的标签栏图标的更多信息,请参考“
用于标签栏的标准图标
”
。提供附加标签
如果您的应用程序的标签栏只包含五个或五个以下的标签,那么iPhone OS可以在标签栏上等距离地将它们全部显示出来,如图6-12所示。图 6-12
iPhone OS的标签栏最多可显示五个标签
如果您的应用程序的标签栏包含的标签数目超过五个,iPhone OS会在标签栏上显示四个标签,并添加一个“更多”标签,如图6-11
所示。用户点击“更多”标签后,能够在一个单独的屏幕中查看附加标签的列表,如图6-13所示。图 6-13
当用户点击“更多”标签时显示附加标签
在“更多”屏幕中同样能够包含一个“编辑”按钮,用户可以通过点击该按钮来配置标签栏,使其显示用户最常用的标签。例如,当用户在iPod程序的“更多”屏幕上点击“编辑”按钮后,他们会看到如图6-14 所示的“配置”屏幕。图 6-14
当应用程序具有五个以上的标签时,用户可选择在标签栏上显示他们最喜爱的标签
请注意iPod在以上三处(标签栏,“更多”屏幕和“配置”屏幕)都使用了相同的标签图标。这有助于使用户确定不管该图标出现在哪里,它都代表相同的意思。为标签栏上的标签做标记
您
可以在标签上显示一种标记,通过这种低调的,不十分显眼的方式与用户进行通信。在用户的任务或上下文环境中可能有些信息并非不可或缺,但它们对用户很有帮
助,因此做标记的反馈方式就很适合于传递这些信息。通过在一个特定的标签上做标记,您可以把标记所表达的信息和您的应用程序中的一种特定模式—甚至是非当
前模式—联系在一起。图6-15显示了一个在标签上做标记的例子。图 6-15
标签栏上传达信息的标记
请注意,如果您注册了苹果通知推送服务并且用户允许显示标记,那么您也可以在应用程序的主屏幕上显示标记。请参考“启用推送通知”
来详细了解这些内容是如何实现的。
警告,动作表单和模式视图
警告,动作表单和模式视图是视图的几种类型,当需要引起用户的注意,或者需要提供额外的选项或功能时,这些视图就会出现。图7-1显示了这几种视图的例子。图 7-1
动作表单,模式视图和警告
要了解这几种类型视图的编程实现,请参考“模式视图控制器”。用法和行为
警告,动作表单和模式视图都是模式的,这意味着用户必须通过点击按钮显式地关闭它们,然后才可以继续使用应用程序。虽然有些时候您需要警告用户潜在的危险动作,或是向他们提供额外的选项,但您一定要避免过度使用这些视图,这是因为:
特别地,应该尽量少使用警告。如果警告出现得过于频繁,用户很可能为使自己免受它们的打扰,不经阅读就关闭这些警告。警告,动作表单和模式视图的设计目的在于传递不同的信息:
这几种类型的视图在外观和行为上也各不相同,这也强调了它们向用户传递的消息不同。由于用户已经习惯了这些视图的外观和行为,所以您一定要在应用程序中正确地,一致地使用这些视图。请阅读下面的章节来了解更多有关警告,动作表单和模式视图的信息。使用警告
警
告会在应用程序屏幕的中间弹出并浮在应用程序的视图之上,以具有高可视性的方式向用户提供关键信息。其特别的外观强调的是,警告的出现是由于应用程序或设
备中的一些变化,而未必是用户最近执行的动作所产生的结果。警告应该显示文本信息来说明当前的情况,在理想情况下,还应该允许用户为下面的操作选择适当的
动作。用户对于设备和后台运行的内置应用程序所发出的警告已经习以为常,比如消息应用程序,但是您还是应该少在应用程序中使用这样的警告。例如,您可能会
使用警告告诉用户,他们启动的任务被阻塞了。采用警告显示这类消息是有道理的,因为告诉用户问题所在并让他们来选择如何处理是非常重要的。您也可以使用警
告让用户有机会选择接受或拒绝一种具有潜在危险的结果。当出现这种情况时,警告应该显示两个按钮:一个用于关闭该警告并执行动作,另一个用于关闭该警告但
不执行动作。通常,应该为关闭警告但不执行动作的按钮使用“取消”作为标签。请注意,如果当显示这样的警告时,用户按下Home键,那么除了退出应用程序
之外,其结果应该与点击“取消”按钮相同:即关闭警告但不执行动作。那些很少出现的警告能够让用户认真地对待它们。因此,一定要尽量减少应用程序中显示的
警告的数量,要确保每一个警告都提供了关键信息和有用的选项。一般情况下,应该尽量避免创建这些警告:
使用动作表单
当用户通过点击应用程序的工具栏上的按钮发起了一项任务,动作表单显示一组与该务相关的可选方案。动作表单适合于:
动作表单总是从应用程序屏幕的底部出现,覆盖应用程序的视图(如图7-1
中
的左图所示)。然而,与警告不同的是,动作表单的侧边缘固定在屏幕的两侧,增强了它与应用程序和用户最近动作的联系。动作表单包含一些按钮,让用户选择如
何完成他们的任务。您不应该向动作表单中添加消息,因为按钮标签—再联系当前正在执行的任务—应该已经为用户提供了足够多的环境信息,帮助他们理解这些选
项的含义。当用户点击其中一个按钮时,动作表单就会消失。由于动作表单为用户提供动作的选项,因此它一定会提供不止一个按钮。使用模式视图
默认情况下,模式视图会从屏幕的下边缘滑出,并且始终覆盖在整个应用程序的屏幕之上(如图7-1
中
位于中间的图片所示)。由于模式视图隐藏了当前的应用程序屏幕,因此它使用户明确感知到自己进入了一种不同的,临时的模式,他们可以在这种模式中完成一些
任务。模式视图可以在适当的情况下显示文本,并且可以包含执行任务所必需的控件。此外,模式视图通常会显示一个用于完成任务并关闭视图的按钮,以及一个用
于放弃任务的“取消”按钮。相比于动作表单,模式视图支持更广泛的用户交互。不像动作表单只能接受单一的选项,模式视图支持多重步骤的用户交互,比如多项
选择或信息输入。当您需要实现一项与应用程序的主功能相关的独立任务时,请使用模式视图。有的用户界面元素无法始终属于应用程序主用户界面,模式视图尤其
适合于需要这种用户界面元素的多步骤子任务。邮件应用程序中的撰写邮件视图就是一个使用模式视图的好例子。当用户点击“撰写邮件”按钮时,会出现一个模式
视图,包含填写地址和消息的文本区,用于输入的键盘,一个“取消”按钮和一个“发送”按钮。设计警告
您可以指定警告中的文本,按钮的数量和按钮的内容,但是您不能定制警告本身的宽度,背景外观以及文本的对齐方式(它是中心对齐的)。注意:
当您阅读这些准则时,应该了解以下定义:
警告的标题(以及可选的消息)应该简明扼要地说明相关的情况,并且告诉用户可以做些什么。理想情况下,您写的文本应该向用户提供足够的背景信息,使他们明白为什么会出现警告并决定点击哪个按钮。当您撰写警告标题时
:
如果您选择提供警告消息:
避免在您的警告文本避免描述点击哪个按钮,
比如“点击‘视图’查看信息”。理想情况下,清晰的警告文本和合乎逻辑的按钮标签向用户提供了足够的信息来了解当前的情况和他们的选择。当然,如果您必须提供详细的指南,请遵循以下原则:
一定要测试您的警告在两个方向上的外观。
在横向上,由于警告的高度受到限制,它可能看起来和在纵向时不太一样。推荐您优化警告文本的长度,以便它在两个方向上的效果看起来都不错(避免滚动显示)。推荐使用具有两个按钮的警告。
通常具有两个按钮的警告是最实用的,因为在两者之间做出选择对用户来说是最容易的。显示只有单个按钮的警告并不是一个好主意,因为这样的警告无法让用户控
制当前的局势;相反,它只能显示信息并提供一个关闭按钮。与具有两个按钮的警告相比,包含三个或以上按钮的警告明显更加复杂,因而应该尽量避免使用这样的
警告。事实上,如果您需要向用户提供两种以上的选择,您应该考虑使用动作表单来代替警告(更多与这种类型的视图相关的信息请参考 “使用动作表单”
和 “设计动作表单”
)。适当地使用警告按钮的颜色。
警告按钮或是暗色的,或是亮色的。在具有两个按钮的警告中,左边的按钮总是暗色的,而右边的按钮总是亮色的。在具有单个按钮的警告中,按钮总是亮色的。
注意:
“取消”按钮既可能是亮色的也可能是暗色的,既可能在右边也可能在左边,这取决于该选择是否具有破坏性。一定要在您的代码中正确识别哪个按钮是“取消”按钮。
为警告按钮提供简短并合乎逻辑的标题。
最好的标题应该由1-2个单词组成,并且这些单词在警告文本的上下文环境中是合理,有意义的。当您为警告按钮创建标题时,请遵循如下准则:
设计动作表单
您可以选择动作表单的背景,使其与您的应用程序的外观是一致的,您也可以指定按钮的
数量和按钮上的内容。与警告不同的是,动作表单不应该显示文本信息。这是因为动作表单是作为用户动作的结果出现的,比如点击“删除”或“发送”按钮,因此
没有必要解释它为什么出现。动作表单可以有两种不同背景的外观。您需要确保动作表单的背景与应用程序的工具栏或导航栏的外观是一致的。例如,如果您的应用
程序使用黑色的导航栏和工具栏,则动作表单的背景应该是半透明黑色的。默认情况下,iPhone
OS在显示动作表单时采用标准的蓝色背景,这与标准的蓝色工具栏和导航栏是一致的。您的应用程序中的所有动作表单应具有相同的背景颜色,并且应该与导航栏
和工具栏的颜色一致。一定要将“取消”按钮显示在动作表单的底部。这样能够促使用户在看到“取消”选项之前通读所有的候选项。图7-2中所示的动作表单具
有默认的背景外观,而且“取消”按钮被放置在推荐的位置上。图 7-2
一个典型的动作表单
如果您需要提供一个按钮来执行具有潜在破坏性的动作,比如删除用户购物清单上的所有条目,那么按钮的颜色应该采用红色。这样的破坏性按钮一定要显示在动作表单的顶部,这一点至关重要,原因有两个:
图 7-3中所示的动作表单具有半透明的黑色背景外观,而且“取消”按钮和破坏性按钮都被放置在了推荐的位置上。图 7-3
执行破坏性动作的按钮应该是红色的,并且要位于动作表单的顶部
您可以在动作表单中显示多个按钮,只要确保每个按钮都能很容易地与其它按钮区分开来。图7-4显示了一个动作表单,其背景与标准的蓝色工具栏相匹配,并且除“取消”按钮之外,它还提供了三个可选的按钮。图 7-4
具有四个按钮的动作表单
设计模式视图
模式视图的整体外观应该与显示它的应用程序是一致的。例如,模式视图通常包含一个导航栏,导航栏具有标题
和用于取消或完成模式视图任务的按钮。该导航栏应该与应用程序的导航栏具有相同的背景外观。模式视图通常应该显示一个以某种方式标识任务的标题。如果合适
的话,您还可以在视图的其它区域显示文本,来更充分地描述任务信息或提供一些指导。例如,消息应用程序在用户想要撰写文本消息时提供了一个模式视图。如图
7-5所示,该模式视图显示了一个导航栏,它与应用程序的导航栏背景相同,标题为“新消息”。图 7-5
模式视图应该与应用程序屏幕保持一致
在模式视图中,您可以使用完成任务所需的任何控件。例如,您可以在视图中包含文本域,按钮和表视图。您可以根据您的应用程序选择显示模式视图的方式,增强用户对该视图所表现的临时环境转换的感知。为了做到这一点,您可以指定以下切换风格中的一种:
如果您决定更改应用程序中模式视图的切换风格,请不要仅仅为了追求多样化而这样做。您要意识到用户会认为这种差异意味着别的含义。因此,最好建立一个具有逻辑性和一致性的模式,使用户可以轻松地觉察到并记住,避免使切换风格发生不必要的改变。
表格视图,文本视图和Web视图
表格视图,文本视图和web视图是具有多种功能的界面元素,它们在iPhone应用程序中有着不同的用途。例如,表格视图可以用来显示简短的选项列表,详细信息的分组列表或者长的项目索引列表。文本视图和web视图相对来说可以不受约束地接受和显示内容。表格视图
表格视图
通过多行单列的表格呈现数据。行可以被分为不同的段或组,每一行可以包含文本,图像和控件的组合。用户可以以轻击或拖动的方式来滚动行或行的分组。图8-1显示了不同样式的表格视图,它们以不同的方式显示列表。图 8-1
使用表格视图显示列表的三种方式
用法和行为
表格视图在iPhone应用程序中非常有用,因为无论是信息量的多少,它们都提供了组织信息的有效方式。尽
管实用型应用程序也可以小范围的使用表格视图,但表格视图通常在需要处理大量用户数据的效率型应用程序中最为有用。沉浸式应用程序一般不会使用表格视图来
显示信息,但是它可能会使用表格视图来显示简短的选项列表。表格视图提供了允许用户浏览和操作信息的内置界面元素。此外,表格视图还支持:
当用户选择一个列表项时,表格视图应该提供反馈信息。
如果一个列表项可以被选中,则当用户选择该
项时,包含该项的行应该暂时高亮显示,以此向用户反馈已收到用户的选择。然后,立即执行动作:要么显示一个新的视图,要么在这一行显示一个复选标记来表明
该项已被选中或启用。在极少数情况下,当与该行中的项相关的附加详细信息或控件显示在同一屏上时,该行可能会继续高亮显示。但是,并不鼓励这样做,因为要
在屏幕上同时显示选项列表,被选中的项和相关的详细信息或控件,很容易造成布局拥挤,令用户感到不适。如果选中某一行的结果是导航到新的屏幕上,那么被选
中的行会在新的屏幕滑动到相应位置之前高亮显示。当用户返回到先前的屏幕时,原来被选中的行会再次高亮显示一下,提示用户他们之前的选择。请注意,您也可
以以动画的方式展现用户对列表项的更改。这样做有利于向用户提供反馈信息和增强用户的直接操作体验。例如,在设置应用程序中,当您关闭自动设置日期和时间
时(在“日期和时间” > “自动设置”中选择关闭),列表分组会平滑地展开,显示两个新的列表项,“时区”以及“设置日期和时间”。表格视图应该立即显示其内容。
如
果表格的内容繁多或者十分复杂,请不要一直等到所有的数据都可用时才显示它们。相反,应该立即使用文本数据填充屏幕上可见的行,当更复杂的数据(比如图
像)可用时再显示它们。这种技术能够马上为用户提供有用的信息,并且提高了您的应用程序的响应能力。如果您的应用程序要显示的数据很少发生变化,您可以考
虑在新的数据可用之前显示那些实际上已经“过期的”数据。这种技术也能够让用户马上看到有用的信息,但不推荐那些数据频繁变化的应用程序也这样做。在您决
定这样处理之前,一定要估计数据变化的频率和用户对迅速看到新数据的期待程度。如果很难立即显示有用的信息,也一定要避免显示空行,因为这会给用户造成
“应用程序已经出现问题而终止”的错误暗示。相反,表应该在屏幕中心显示一个旋转的活动指示符和一条信息标签,比如“加载中...”。如果您可以显示旧的
数据,您就不必担心空行的问题,但是您应该在获得新数据后立即更新屏幕上的信息。这两种技术都为用户提供了反馈信息,让他们知道应用程序的处理正在进行当
中。表格视图样式
iPhone OS定义了两种样式的表格视图,它们的区别主要在于外观:无格式样式
(UITableViewStylePlain)
这种视图样式所显示的行从屏幕一侧的边缘延伸至另一侧的边缘。行的背景是白色的。每一行可以被分成带标签的段,并且可以在视图的右边缘垂直地显示一个可选
的索引。图8-2显示了iPod应用程序中的一个无格式样式的列表(没有页眉,页脚和索引)。Figure 8-2
一个简单的无格式样式的列表
分组样式
(UITableViewStyleGrouped)这种视图样式显示行的分组,每组表格行会相对屏幕两侧缩
进。这些分组显示在独特的垂直条纹背景下,而分组内部的背景则是白色的。分组样式的表格可以包含任意数量的分组,每一个分组可以包含任意数量的行。在每一
组之前可以加入页眉文本,其后可以加入页脚文本。这种样式的表格视图不提供索引。图8-3显示了一个分组样式的列表,其中每个分组均包含一行。该列表出现
在设置应用程序中,不包含页眉或页脚文本。图 8-3
一个包含四个分组的,具有分组样式的列表
单元格样式
iPhone OS
3.0及后续版本中包含了四种预定义的单元格样式,您可以使用它们快速,方便地为无格式样式和分组样式的表格行创建常用的布局。请注意,从编程角度而言,
这些样式是应用在表格视图的单元格上的,单元格规定了表格应该如何绘制各行。当您使用标准单元格样式时,您的应用程序的风格会与内置应用程序保持一致,这
将在以下几个方面使您获益:
如果您想要以非标准的方式布置您的表格行,您最好创建一种自定义的单元格样式,而不是大刀阔斧地修改已有的标准样式。iPhone OS表格视图编程指南
中
的“自定义单元格”一节可以帮助您了解如何创建自己的单元格。请注意,在所有的单元格样式中,文本都会被自动截断。一般来说,您应该确保您的文本尽可能简
洁,避免显示出用户难以理解的被截断的单词或词组。具体来讲,文本截断是个可大可小的问题,这取决于您使用的单元格样式和截断发生的位置。iPhone
OS提供下列标准单元格样式:
注意:
所有的标准单元格样式都允许添加表格视图元素,比如复选标记或展开指示符。但是一定要注意,添加这些元素会减少单元格中可用于标题和副标题的空间宽度。
文本标签代表一个表格项的名称或标题,而且其左对齐的格式使得列表很易于浏览。因此,默认样式非常适合于显示不需要根据附加信息加以区分的表格项列表。最好使用简短的文本标签,但是如果文本截断无法避免,要尽量确保最重要的信息包含在前几个单词中。
文本标签代表一个表格项的名称或标题,而详细信息文本标签则表明它包含与该表格项相关的附加信息。文本标签的左对齐格式使得列表很易于浏览。在列表项看起
来比较相似的情况下,这种单元格样式很适用,因为用户可以参考详细信息文本标签中的附加信息,以便区分文本标签中列举的表格项。文本标签应该尽量简短,以
避免发生文本截断。如果文本截断无法避免,请注意将最重要的信息放在前几个单词中。如果详细信息文本标签发生截断,用户则不会太介意,因为他们认为它只是
用于加强或补充文本标签中列举的表格项。
文本标签代表一个表格项的名称或标题,而详细信息文本标签提供了与该表格项紧密相关的重要信息。文本标签的左对齐格式和字体样式有助于用户浏览他们所需的
项目列表,而详细信息文本标签的右对齐格式可以引起用户对表格项相关信息的关注。这种单元格样式适合于显示表格项的当前值,而该值可能选自一个子列表。在
这种布局中,可能很难避免文本截断的发生(因为两个标签位于同一行),但是仍值得您努力尝试。否则,两组标签之间没有留白,用户很难了解这两部分信息之间
的关系。虽然您可以在无格式表格或分组表格中使用 value
1单元格样式,但是其外观更适合于分组表格。例如,在设置应用程序的“用法”屏幕中,分组表格使用了value 1样式:图 8-7
在分组表格中具有最佳视觉效果的value 1单元格样式
文本标签的右对齐格式,受限宽度及其字体样式意味着它仅起到一标题的作用,左对齐详细信息文本标签则包含更重要的信息。在这种布局中,标签是每一行中的相
同位置相向排列的。这样,就在列表中的文本标签和详细信息文本标签之间形成了一条清晰的垂直边缘,有助于用户一眼就能看到详细信息文本标签的首单词。如果
您允许文本标签被截断,该垂直边缘的清晰程度则会有所消减,这会造成用户浏览详细信息文本标签中的信息变得更加困难。虽然您可以在无格式表格或分组表格中
使用 value 2单元格样式,但是其外观更适合于分组表格。例如,在联系人应用程序的“信息”屏幕中,分组表格使用了value 2样式:图 8-9
在分组表格中具有最佳视觉效果的value 2单元格样式
您也许能够通过增加表格行的高度,以支持文本换行,从而避免文本截断,但这可能会产生一些问题:
最后要强调的是,虽然在分组表格中可变的行高是可以接受的,但是它们会使无格式表格显得混乱不均。表格视图元素
iPhone OS包含一些可以扩展表格视图的表格视图元素
。除非特别注明,否则这些元素都只适用于表格视图。在您的应用程序中,一定要正确地使用这些元素,因为用户已经习惯了它们在内置应用程序中的外观和行为。注意:
从编程角度而言,表格视图元素是以不同的方式实现的。有些是单元格(控制表格如何绘制各行的对象)的附属视图,其他的可能在表格视图进入编辑模式时显示。要了解管理这些元素的不同方式,请参考iPhone OS表格视图编程指南
。
图 8-10
表格视图可以显示“删除”按钮和删除控制按钮
开关控件
开关控件
呈现给用户两种互斥的选项或状态,比如“是/否”或“开/关”。开关控件每次只能显示两个选项中的一个;用户滑动该控件可以显示隐藏的选项或状态。图8-11显示了开关控件的例子。图 8-11
表格视图中的开关控件
当您需要向用户提供两个简单的,完全对立的选项时,您可以在分组表格视图中使用开关控件。由于其中一个选项始终是隐藏的,因此最好在用户已经知晓这两个选
项是什么的情况下才使用开关控件。换句话说,不要让用户仅仅为了弄清楚另一个选项是什么而滑动开关控件。您可以使用开关控件来改变视图中的其他用户界面元
素的状态。根据用户做出的选择,可能会有新的列表项出现,或者有列表项消失,或者有的列表项变为有效或无效的状态。使用表格视图实现常用的用户操作
表格视图是非常通用的用户界面元素,因为它们可以通过不同的配置方式来支持不同的用户操作,比如:
文本视图
文本视图
是一片能够显示多行文本的区域,并在内容过长超出其边界范围时可以滚动。邮件应用程序就使用了文本视图让用户创建签名,签名会出现在用户所撰写的每一封邮件的正文末尾处,如图8-17所示。图 8-17
显示多行文本的文本视图
如果您需要在用户点击表格视图中的某行时向用户显示选项列表,您可以使用任意一种样式的表格视图。但是,如果您需要在用户点击按钮或其它位于表格行之外的用户界面元素时向用户显示选项列表,则您应该选用无格式样式的表格视图。
如果一个表格视图用于导航时,当用户按照层次结构回溯他们浏览过的内容时,先前被选中过的表格行不再保持高亮显示。
一般来说,分组样式表格提供了更清晰的,可视化的分组表示,因为即使在快速滚动的情况下,用户也很容易认出分组所具有的圆形的四角。 图8-15
显示了iPod设置中一些概念相近的分组。图 8-15
分组样式表格视图可以包含多个分组
如果您在无格式样式表格中包含了索引,您就应该避免使用那些需要在表格的右边缘显示的表格视图元素(比如展开指示符),因为这些元素会影响索引的使用。
您不但可以使用文本视图来显示多行文本,如一份大文本文件的内容,而且您还可以使用文本视图来支持用户编辑。如果您提供的文本视图是可编辑的,那么当用户
在文本视图内点击时会自动显示键盘。键盘的输入法和布局取决于用户的语言设置。当用户点击“.?123”键(如图8-17所示)时,键盘会切换到数字键
盘,使得数字和标点符号的输入更加方便。您也可以指定不同的键盘样式,这取决于您希望用户所输入的文本类型。关于可使用的键盘样式请参考“文本框”
。
您可以在文本视图中控制文本的字体,颜色和对齐方式,但这些属性会应用于整个文本。也就是说,您无法只对部分文本做出上述属性的改变。正如您所期望的那
样,默认的字体和颜色采用系统字体和黑色,因为其可读性最强。默认的对齐属性为左对齐(您可以将其改为居中对齐或右对齐)。如果您一定要在同一个文本视图
中使用不同的字体,颜色和对齐方式,您可以使用web视图代替文本视图,使用HTML来格式化文本。Web视图
Web视图
是应用程序屏幕上可以显示丰富的HTML内容的一片区域。例如,邮件应用程序使用web视图显示邮件的内容,因为这种视图可以包含比纯文本更丰富的内容(图8-18显示了这样的一个例子)。图 8-18
Web视图可以显示基于web的内容
除了显示web内容之外,web视图还提供了一些元素来支持用户浏览开放的网页。虽然您可以选择向用户提供网页浏览功能,但是最好避免让您创建的应用程序
看起来像是一个小型web浏览器。如果您拥有一个网页或web应用程序,您可以选择使用web视图对其进行包装,实现一个简单的iPhone应用程序。如
果您打算访问由您操控的web内容,请首先阅读Safari Web内容指南
,确保您已经知道对于iPhone OS设备,如何创建与之兼容并针对其显示进行过优化的web内容。
应用程序控件
iPhone
OS为您提供了若干控件,您可以在自己的应用程序中使用它们,并且这些控件中的绝大部分已经被iPhone
OS设备的用户所熟知。这些控件有很多只能用于特定位置,比如表格视图,但也有一些控件具备一定的通用性。本章将向您介绍可以在应用程序的任意视图中使用
的控件。当您设计应用程序的用户界面时,永远要牢记一点:对于熟悉的控件,用户期望它们具有与内置应用程序中一样的行为。只要您在应用程序中适当地使用这
些控件,一定会为自己的程序增色不少。活动指示器
活动指示器
表示有一项持续时间未知的任务或进程正在进行当中。如果已知一项任务的持续时间,需要显示该任务的进度,请使用进度视图(更多关于该控件的信息请参考“进度视图”
)。
活动指示器看起来像一个“旋转的齿轮”,告诉用户处理正在进行中,但不知何时能够完成。图9-1显示了两种活动指示器。状态栏上的是网络活动指示器;如果
您的应用程序访问网络时超过了一定的秒数,状态栏就会显示该指示符。工具栏上较大一点的活动指示器在您的应用程序执行当前任务的时间多于1秒或2秒时显
示。图 9-1
两种活动指示器
活动指示器是一种很好的反馈机制,它告诉用户他们的任务或进程并没有终止,而不是说明任务何时结束。您可以选择活动指示器的大小和颜色来配合它所在的视图
的背景。默认情况下,活动指示器是白色的。当任务或进程已经完成时,活动指示器就会消失。推荐您使用这种默认行为,因为用户期望在有动作发生时看到活动指
示器,而且他们会将静止不动的活动指示器与停滞的进程联想到一起。要了解如何显示网络活动指示器,请参考UIApplication类参考
中的networkActivityIndicatorVisible方法。要了解如何在您的代码中显示一个较大的非网络活动指示器,请参考UIActivityIndicatorView类参考
。日期时间选择器
日期时间选择器
为
用户提供了一种简单的选择特定日期或时间的方式。日期时间选择器最多可以有4个独立的转轮,每个轮只显示一种类型的值,比如月份或小时。用户通过点击或拖
拽使转轮转动,直到它将用户想要的值显示在选择器中间的一条突出显示的选择栏上。最终的值由各个轮上的值组合而成。图9-2显示了一个日期时间选择器的例
子。图 9-2
日期时间选择器
使用日期时间选择器可以避免用户输入由多段组成的值,比如一个日期的年,月,日。日期时间选择器使用起来很方便,因为每一部分的值都有相对小的范围,并且
用户知道这些值应该是多少。日期时间选择器会根据您指定的不同模式显示出不同数量的转轮,每个转轮都有一组不同的值。日期时间选择器定义了如下模式:
默认情况下,分钟轮显示60个值(0到59)。但是,如果您想要比较粗略地显示时间,您可以设置分钟轮,使其每隔几分钟显示一个值,
只要时间间隔的值是60的因数就可以。例如,您可以以一刻钟为间隔,显示0,15,30和45。不管如何设置,日期时间选择器的整体大小是固定的,与键盘
的尺寸相同。您可以选择将日期时间选择器设为视图中的焦点元素,或者让它只在需要时出现。例如,内置的时钟应用程序的计时器模式会显示一个总是可见的日期
时间选择器,这是因为时间的选择对“定时器”的功能起至关重要的作用。另一方面,“设置日期和时间”首选项(在您关闭“自动设置”的情况下,可在“设置”
> “一般” >
“日期和时间”找到该选项)只显示临时的日期时间选择器,显示与否取决于用户是否想要设置日期或时间。要了解更多有关在您的代码中使用日期时间选择器的内
容,请参考UIDatePicker类参考
。详细信息展开按钮
详细信息展开按钮
提供了关于某一项的额外信息或更详细的信息。通常用于表格视图中,向用户提供查看某个列表项(请参考“表格视图元素”
查
看更多关于该用法的信息)的详细信息的方法。然而,您也可以在其他类型的视图中使用该元素,来提供一种显示更多信息或功能的方法。例如,地图应用程序显示
了一个详细信息展开按钮,用户可以点击该按钮来访问和大头针所钉位置相关的更多功能。图9-3显示了一个详细信息展开按钮的例子。图 9-3
显示额外的详细信息或功能的详细信息展开按钮
要了解更多有关在您的代码中使用详细信息展开按钮的内容,请参考UIButton类参考
。信息按钮
信息按钮
提供了一种显示应用程序配置信息详情的方法,它通常位于屏幕的背面。因此,信息按钮特别适合于工具应用程序。您可以在天气应用程序(图9-4所示)的右下角看到一个信息按钮的例子。图 9-4
信息按钮用于显示信息,通常是配置信息详情
信息按钮提供了亮色和暗色两种背景。亮色背景样式(如图9-4所示)在暗色背景的视图中效果比较好。相反,暗色背景的信息按钮在亮色背景的视图中效果更
佳。信息按钮会在用户点击它时短暂发光。当您使用iPhone
OS提供的信息按钮时,您将自动获得这种处于被按下状态下的外观。要了解有关在您的代码中使用信息按钮的更多内容,请参考UIButton类参考
。标签
标签
是一种大小可变的静态文本。图9-5显示了一个标签的例子。图 9-5
为用户提供信息的标签
您可以使用标签为用户界面的各部分命名,或者向用户提供一定的帮助信息。标签最适合显示数量相对较少的文本。您可以设定标签文本的各种属性,比如字体,文
本颜色和对齐方式,但最重要的是,您要确保您的标签清晰易读。不要为了华丽的字体或鲜艳的颜色而牺牲文本的清晰度。当您撰写标签的文本时,一定要使用用户
的词汇。请检查您的应用程序中的文本,如果存在以开发人员为中心的词语,请使用以用户为中心的词语替换它们。要了解有关在您的代码中使用标签的更多内容,
请参考UILabel类参考
。页指示符
页指示符
为当前在应用程序中
打开的每一个视图显示一个小圆点。这些小圆点从左到右的顺序表示了视图被打开的顺序(最左边的小圆点代表第一个视图)。对于当前屏幕上显示的视图,用发光
的小圆点加以表示。用户点击发光小圆点的左右两侧可以查看上一个或下一个打开的视图。图9-6显示了一个页指示符的例子。图 9-6
页指示符
页指示符为用户提供了一种快捷的方法来查看当前有多少打开的视图,同时也能表示出这些视图被打开的先后顺序;它并不能帮助用户追踪他们在视图层次中所处的
位置。因为实用型应用程序中的视图彼此之间往往是对等的,所以页指示符能够充分帮助用户在各视图之间进行导航。另一方面,能够显示层次信息的效率型应用程
序应该通过导航栏(请参考“导航栏”
获
取更多信息)上的元素提供导航信息。典型情况下,页指示符最好出现在应用程序屏幕的下边缘,位于它所包含的视图的下方。这样就可以把屏幕的上面部分留给更
重要的信息(视图本身),使用户很容易看到。一定要确保页指示符垂直居中于视图的下边缘和屏幕的下边缘之间。虽然对于在页指示符中可以显示的小圆点的数量
没有规划性的限制,但是当页面越来越多时,指示点之间不能过于密集。例如,当设备处于纵向时,您只能在一个页指示符上显示至多20个小圆点。因此,您应该
在应用程序中避免发生这种情况。虽然您可以在只有一个打开的视图时隐藏页指示符,但默认的行为是显示它。要了解有关在您的代码中使用页指示符的更多内容,
请参考UIPageControl类参考
。选择器
选择器
是日期时间选择器(关于该控件的更多信息请参考“日期时间选择器”
)的通用版本。您可以使用选择器来显示任意一组值。与日期时间选择器一样,用户旋转选择器的单个或多个转轮直到出现他们想要的值。图9-7显示了一个单轮的选择器。图 9-7
iPhone的Safari中出现的选择器
当您决定是否在应用程序中使用选择器时,要考虑到当转轮静止时,轮上的许多甚至绝大多数数值对用户来说是隐藏的。但这不一定是个问题,特别是在用户已知这
些值是多少的情况下。例如,在日期时间选择器中,用户了解在月份轮上隐藏的值只能是1到12之间的数字。然而,如果您要提供的选项不是像这样的一组众所周
知的值,那么使用选择器控件可能并不合适。如果您需要显示特别多数量的值,则您应该用表格视图将这些值列出,而不是用选择器。这是因为表格视图具有更高的
高度,能够更快速地进行滚动。如果您需要为选择器中的值提供上下文信息,比如计量单位,请将它显示在水平地穿过控件中心的半透明选择栏中。不要在选择器上
方或转轮本身上显示这样的标签。有关正确显示标签的例子,请参考内置的时钟应用程序的“定时器”功能,可以看到在用户选择的值旁边显示了单位“小时”和
“分钟”。与日期时间选择器一样,通用的选择器可以一直可见(作为您的用户界面的焦点)或者只在需要时出现。选择器的整体大小,包括它的背景,都是固定
的,与键盘的尺寸相同。要了解更多有关在您的代码中使用选择器的内容,请参考UIPickerView类参考
。进度视图
进度视图
显示具有确定持续时间的任务或进程的进度。如果您需要显示未知持续时间的任务的进度,请使用活动指示器(关于该控件的更多信息请参考“活动指示器”
)。iPhone OS提供了两种样式的进度视图,分别是默认样式和栏样式。这两种样式的外观非常相似,区别在于高度不同:
两种样式进度视图的行为是相同的。随着任务或进程的执行,进度视图会从左到右被填满。在任意一刻,视图中已填充和未填充区域的比例都向用户表明该任务或进程还有多久能够完成。图9-8 显示了一个栏样式进度栏的例子。图 9-8
工具栏上的栏样式进度视图
进度视图是那些具有明确持续时间的任务向用户提供反馈信息的好方法,尤其是在向用户显示一项任务大约会执行多久十分重要的情况下。当您显示进度视图时,用
户会得知他们的任务正在执行,并且用户获得了足够的信息,他们可以决定是否等待任务完成,或者取消该任务。要了解更多有关在您的代码中使用进度视图的内
容,请参考UIProgressView类参考
。圆角矩形按钮
圆角矩形按钮
是一种多功能的按钮,您可以在视图中使用它来执行一个动作。您可以在每一个联系人视图的底部看到这种按钮的例子:文本消息和添加到收藏夹按钮就是圆角矩形按钮,如图9-9所示。图 9-9
执行应用程序特定动作的圆角矩形按钮
当您为圆角矩形按钮创建标题时,请务必:
要了解更多有关在您的代码中使用圆角矩形按钮的内容,请参考UIButton类参考
。搜索栏
搜索栏是一片接收用户输入的文本的区域,您的应用程序可以以搜索栏中的文本为输入进行搜索。当用户点击搜索栏时,会出现一个键盘;当用户键入要搜索的条目后,输入的信息将按照应用程序指定的方式处理。(关于在应用程序中处理搜索,请参考“提供搜索功能并显示搜索结果”
。)默认情况下,搜索图标显示在搜索栏的左侧。此外,搜索栏还可以显示一些可选的元素:
图9-10显示了一个包含自定义占位符文本,书签按钮和默认搜索图标的搜索栏。图 9-10
带有可选的占位符文本和书签按钮的搜索栏
默认情况下,书签按钮和清除按钮会按下列方式对彼此产生影响:
您可以通过指定一种标准颜色的背景样式来自定义搜索栏,比如:
此外,您可以在搜索栏的下方显示一个范围栏,其中包含一些按钮,用户可以点击这些按钮来选择搜索的范围。范围栏的外观与您所指定的搜
索栏外观相同,并且由您为范围栏提供自定义的标题。不论设备的方向如何,范围栏总是显示在搜索栏的下方,除非您在代码中使用搜索显示控制器(详细信息请参
考UISearchDisplayController类参考
)。当您使用搜索显示控制器时,范围栏会显示在搜索栏的内部,如果设备横向放置,则范围栏位于搜索字段的右侧(如果设备纵向放置,则范围栏位于搜索栏的下方)。要了解更多有关在您的代码中使用搜索栏和范围栏的内容,请参考UISearchBar类参考
。分段控件
分段控件
是处在一条直线上的各段的集合,其中的每一段都相当于一个按钮,可以显示不同的视图。当用户点击分段控件中的一段时,应该产生一个瞬时的动作或可见的结果。例如,当用户使用分段控件选择一种邮件协议时,设置应用程序将显示不同的信息,如图9-11所示。图 9-11
分为三个段的分段控件
分段控件的长度取决于您所显示的段的数量以及最长一段的尺寸。分段控件的高度是固定的。虽然您可以指定要显示的段的数目,但要注意,用户必须能够舒服地点
击到任何一段,而无需担心触碰到相邻的段。由于点击区域应该是44 x
44像素,因此建议将分段控件分为5段或5段以下。分段控件可以包含文本或图像;每一个单独的分段要么包含文本,要么包含图像,但不能同时包含两者。一般
来说,最好避免在同一个分段控件中混合使用文本和图像。分段控件要保证每一段的宽度与段的总数相称。这意味着您要确保为每一段设计的内容在尺寸上要大致相
等。要了解有关在您的代码中使用分段控件的更多内容,请参考UISegmentedControl类参考
。滑块
滑块
允许用户在允许的值的范围内对一个值或一个过程进行调整。当用户拖拉滑块时,相应的值或过程也不断被更新。图9-12显示了一个带有最小值和最大值的图像滑块的例子。图 9-12
滑块
滑块主要在下面两种情况下很有用:
滑块由轨道,滑块以及可选的左右两边值的图像组成。图9-13显示了滑块的各个部分。图 9-13
滑块的四部分
您可以设定滑块的宽度,使其适合于您的应用程序的用户界面。此外,您可以选择水平地或垂直地显示滑块。有以下几种方法自定义滑块:
要了解有关在您的代码中使用滑块的更多内容,请参考UISlider类参考
。文本框
文本框
是一个接收用户输入的圆角矩形的区域。当用户点击文本框时,会出现一个键盘;当用户点击键盘上的Return键时,文本框会以应用程序指定的方式处理用户的输入信息。文本框可容纳单行的输入。图9-14显示了地图应用程序中的两个文本框。图 9-14
可接收用户输入的文本框
您可以使用自定义文本框来帮助用户在您的应用程序中进行输入。例如,您可以在文本框的左侧或右侧显示自定义的图像,或者显示一个系统提供的按钮,比如图
9-14中的“书签”按钮。在一般情况下,您应该在文本框的左端指明该文本框的用途,而在右端显示一些附加的功能,比如书签。您也可以在文本框的右端显示
清除按钮。当该按钮存在时,不论您在它的上面显示什么图像,点击该按钮都会清除文本框的内容。有时候,如果文本框显示一些提示信息,比如“姓名”,则有助
于用户理解这个文本框的用途。文本框支持显示占位符文本,它们可以在文本框中没有其他文本时显示。要了解与使用文本框,以及自定义显示图像和按钮的文本框
的详情,请参考UITextField类参考
。您可以指定不同的键盘样式,来迎合用户输入的内容的不同类型。(注意,您不能控制键盘的输入
法和布局,这些是由用户的语言设置决定的。)例如,你可能希望用户能够方便地输入URL地址,PIN密码或电话号码。iPhone
OS提供了几种不同的键盘类型,这样设计是为了方便不同类型的输入。要了解可供您使用的键盘类型,请参考UIKeyboardType。要了解更多有关在
您的应用程序中管理键盘的内容,请阅读iPhone应用程序编程指南
中的“键盘管理”一节。
系统提供的按钮和图标
为了打造一致的用户体验(也为了让您的工作更加轻
松),iPhone
OS提供了许多用于导航栏和工具栏的标准按钮,以及用于标签栏的图标。本章介绍了可供您使用的标准图标和按钮,以及如何正确地使用它们。不论您正在开发哪
种类型的应用程序,您都应该熟悉本章中所介绍的按钮和图标,这有助于您:
使用系统提供的按钮和图标
在iPhone OS中,许多标准的工具栏和导航栏按钮,标签栏上的项以及在内置应用程序中常见的通用按钮都是可用的。在图10-1中,您可以在邮件应用程序的工具栏上看到一些标准工具栏按钮。图 10-1
邮件应用程序工具栏上的标准按钮
像图10-1所示的这几个按钮—“刷新”,“组织”,“删除”,“回复”和“撰写”,早已被许多内置的应用程序所使用,因此,用户非常熟悉它们的含义和用
法。这意味着,如果您的应用程序支持这些功能,您就可以利用用户对它们的熟悉,使得应用程序的用户界面更加简洁而高效。反之,这也意味着,如果您将这些按
钮与其他任务联系起来,很可能会使用户觉得迷惑和不适应,因为用户以为这些按钮仍具有他们所熟知的功能,但实际上它们会执行另外的功能。除了可以充分利用
用户以往的使用经验之外,使用系统提供的按钮和图标还能够带来另外两大好处,具体为:
值得重申的是,为了利用用户熟悉的优势,使用更短的开发时间并保持用户界面的语义一致性,您必须恰当地使用这些按钮和图标。具体来说,这意味着您应该按照按钮或图标规定的含义和推荐位置来使用它们,而不是依靠您对其外观的臆测。请参考“用于工具栏和导航栏的标准按钮”
,“用于标签栏的标准图标”
和“用于表格行和其他用户界面元素的标准按钮”
等小节,来了解关于系统提供的按钮和图标的含义和位置信息。Interface Builder可以很方便地使用系统提供的按钮,并将系统提供的图标应用到您的控件中。您可以参考Interface Builder用户指南
中的“iPhone OS用户界面对象”部分,来了解关于外观的信息。如果任何系统提供的工具栏按钮,导航栏按钮或标签栏项目图标都无法恰当地反映您的应用程序中的某种特定功能,那么您应该设计自定义的按钮或图标。“导航栏,工具栏和标签栏的图标”
小节为您提供了一些指导,能够帮助您完成这项工作。用于工具栏和导航栏的标准按钮
iPhone OS为您准备了在工具栏和导航栏中常见的标准按钮。表10-1
所示的这些按钮具有两种样式,分别用于下列不同情况:
如同所有系统提供的按钮一样,请不要将表10-1中的按钮用于其设计用途之外的操作。尤其要避免只根据外观选择按钮,而不考虑这个按钮的文档描述。请参考“使用系统提供的按钮和图标”
一节,这部分内容讨论了正确使用图标的重要意义。(有关这些按钮的符号名称和可用性的信息请参考UIBarButtonSystemItem的文档。)表 10-1
可用于工具栏和导航栏的标准按钮(以无格式样式显示)
除了表10-1所示的按钮之外,在您的应用程序中,您也可以使用表10-2中由系统提供的“编辑”,“取消”,“保存”和“完成”按钮,以支持编辑或其他
类型的内容操作。(有关这些按钮的符号名称和可用性的信息请参考介绍UIBarButtonSystemItem的文档。)这些按钮对于导航栏和工具栏都
适用,但只能以有边框样式提供给用户。如果您使用上述按钮,即使您将其指定为无格式样式,它也会被转换为有边框样式。表 10-2
用于导航栏的有边框样式的动作按钮
用于标签栏的标准图标
iPhone
OS提供了用于标签栏的标准图标,如表10-3所示。有关这些图标的符号名称和可用性的信息请参考介绍UITabBarSystemItem的文档。与所
有的标准按钮和图标一样,您必须根据其规定含义使用这些图标。尤其要注意,要基于图标代表的含义来使用图标,而不是它的外观。这样即使图标的外观发生改
变,它所代表的特定含义不变,从而使应用程序的用户界面看起来仍然合理,请参考“使用系统提供的按钮和图标”
一节,进一步了解为什么正确使用这些图标如此重要。表 10-3
用于标签栏的标准图标
用于表格行和其它用户界面元素的标准按钮
iPhone OS提供了少量用于表格行和其他元素的按钮。表10-4列出了这些按钮,与所有的标准按钮和图标一样,它们应该按照其含义被正确地使用。特别是要避免只根据外观选择按钮,而不是这个按钮的文档描述。请参考“使用系统提供的按钮和图标”
一节,这部分内容讨论了正确使用这些图标的重要意义。虽然“详细信息展开”按钮通常在表格行中使用,但它也可以用在别处。有关该按钮的更多信息请参考“详细信息展开按钮”
。iPhone OS还提供了一组只能在表格行中使用的控件;有关这些控件的具体信息请参考“表格视图元素”
一节。有关这些按钮的符号名称和可用性的信息请参考介绍UIButtonType的文档。(表格视图元素“详细信息展开”的符号名称和可用性的信息请参考介绍UITableViewCellAccessoryDetailDisclosureButton的文档。)表 10-4
用于表格行和用户界面元素的标准按钮
创建自定义图标和图像
iPhone应用程序的用户界面向来以其精美的图像和丰
富的色彩著称。作为应用程序的设计者,您需要提供一个美观的用户界面以融入这样的整体风格。虽然iPhone
OS提供了大量精美的用户界面元素,但是每个应用程序仍然需要两个自定义元素:应用程序图标和启动图像。此外,应用程序还应该为iPhone
OS提供用于显示在Spotlight搜索结果中的小图标。有些应用程序需要自定义图标,用于在导航栏,工具栏和标签栏中表示应用程序的特定功能和模式。
遵循创建这些图标的准则,您就可以设计出既与内置图标相称,又能巧妙地突显您应用程序风格的图标和图像。注意:
图标和图像的标准比特深度是24位(其中,红色,绿色和蓝色各占8比特),外加8位的alpha通道。建议您使用PNG格式,因为它保留了颜色深度,并且
内置支持ɑ通道。您可以使用预览应用程序产生最终的PNG文件。您无须将颜色限定在Web安全色内。虽然您可以在为导航栏,工具栏和标签栏创建的图标中使
用alpha透明度,但不要在应用程序图标中这么做。
应用程序图标
应用程序图标
是用户会放置在其主屏幕上的图标,点击该图标可以启动应用程序。在这里您可以将品牌宣传和强烈的视觉效果结合起来,使其简洁,易辨认且引人注目。用户可以选择想要在主屏幕上显示的应用程序图标,因此您应该设计一个这样的图标:
尽量使您的图标在吸引眼球和表意清晰之间找到平衡点,这样可以使图标既丰富,漂亮,又能传达应用程序的本意。此外,调查一下具有不同
文化背景的人们会对您选择的图像和颜色产生哪些不同的理解也是不错的办法。当用户决定在主屏幕上显示您的应用程序图标时,iPhone
OS会自动为其添加一些视觉效果,以便该图标与内置图标保持一致。具体包括:
例如,图11-1显示了一个由应用程序提供的简单图标。图 11-1
一个简单的应用程序图标,未显示在主屏幕之前的样子
图11-2显示了同一个图标被iPhone OS显示在主屏幕时的样子。图 11-2
一个简单的应用程序图标,显示在主屏幕时的样子
在主屏幕上,具有清晰背景的应用程序图标看起来效果最佳。这主要是因为iPhone
OS添加了圆角效果:统一的圆角效果使用户主屏幕上的所有图标都具有一致的可点击外观。如果您创建的图标具有黑色背景,当显示在主屏幕上时,它的背景会消
失,用户就无法看到它的圆角效果。这样的图标往往让人觉得是无法点击的,会干扰到主屏幕的次序结构。为了确保您的图标可以充分利用iPhone
OS所提供的视觉增强功能,建议您创建这样的PNG格式图像:
将您的图标文件命名为Icon.png,并将它放在应用程序包的顶层。要了解更多与应用程序包的内容相关的信息,请参考iPhone应用程序编程指南
中的“应用程序包”一节。注意:
您也可以选择让iPhone OS不要为您的图标添加光晕效果。要做到这一点,您需要在应用程序的Info.plist文件(要了解该文件,请阅读iPhone应用程序编程指南
中的“信息属性列表”一节)中添加UIPrerenderedIcon键。无论您是否使用光晕效果,您的图标都应该采用57 x 57像素。
当您提交您的应用程序时,必须包含一个512 x 512像素版本的应用程序图标,用于在App
Store中显示。虽然,让用户一眼就能认出这个版本的图标就是您的应用程序的图标非常重要,但这个版本的图标应该更华丽,更精细。换句话说,您不应该只
是简单地放大应用程序图标,直接作为您为App Store创建的图标。如果您正在开发一个私下发布的应用程序(即不通过App
Store发布),您也必须提供一个512 x
512像素版本的应用程序图标。在这种情况下,将图标文件命名为iTunesArtwork(没有文件扩展名),并把它放在应用程序包的顶层。这个图标用
于在iTunes中标识您的应用程序。小图标
每个应用程序都应该提供一个小图标,当应用程序的名称与
Spotlight搜索栏中的词条相匹配时,iPhone
OS可以显示这个小图标。具有设置功能的应用程序也应该提供这种小图标,用于在内置的设置应用程序中标识应用程序。您的小图标应该能清晰地标识您的应用程
序,以便用户可以在搜索结果列表中明确地识别出来。要做到这一点,您应该创建这样精简而吸引人的图标:
将您的图标文件命名为Icon-Small.png,并将它放在应用程序包的顶层。要了解更多与应用程序包的内容相关的信息,请参考iPhone应用程序编程指南
中的“应用程序包”一节。注意:
如
果您没有提供名为Icon-Small.png的图标,并且您的应用程序包中不包含早期版本的名为Icon-Settings.png的小图标的话,那么
iPhone
OS会将您的应用程序图标进行缩放,用于在搜索结果和设置应用程序中进行显示。如果您的应用程序包中包含名为Icon-Settings.png的小图
标,但是不包含名为Icon-Small.png的图标,那么iPhone
OS会在搜索结果中显示设置图标。不过,您应该更新应用程序包,使其只包含Icon-Small.png文件。
启动图像
为了增强应用程序启动时的用户体验,您应该提供一个启动图像
。启动图像与应用程序的首屏幕看起来非常相似。当用户在主屏幕上点击您的应用程序图标时,iPhone OS会立即显示这个启动图像。一旦准备就绪,您的应用程序就会显示它的首屏幕,来替换掉这个启动占位图像。一定要强调的是,之所以提供启动图像,是为了改善用户体验,并不
是为了提供:
由于用户可能会频繁,快速地在应用程序之间进行切换,因此,您应该尽一切努力将启动时间降到最短,而且您设计的启动图像应该尽量减轻用户等待的体验,而不是吸引用户的注意力。要做到这一点,您应该设计这样的PNG格式的图像:
将您的启动图像命名为Default.png,并把它放在您的应用程序包的最顶层。要了解更多与应用程序包的内容相关的信息,请参考iPhone应用程序编程指南
。
您可能觉得遵循这些准则会导致启动图像显得平淡无趣,然而,实际上正是这样。请记住,启动图像并不是为您提供机会进行艺术展示;它完全是为了增强用户对应
用程序能够快速启动并立即投入使用的感知度。下面的例子向您展示了启动图像有多么简单。第一个例子是内置设置应用程序的启动图像,如图11-3所示。设置
应用程序的启动图像只显示了应用程序的背景,因为应用程序中的其他内容都无法保证是静态的。图 11-3
设置应用程序的启动图像
另一个启动图像的例子源自内置股票应用程序,如图11-4所示。请注意,只有包含在启动图像中的图像才是静态的图像,它们在股票应用程序的正面视图中总是可见的。图 11-4
股票应用程序的启动图像
导航栏,工具栏和标签栏的图标
如果可能的话,您应该在导航栏,工具栏和标签栏中使用系统提供的按钮和图标。
iPhone
OS提供了各式各样的标准按钮和图标,用户看到它们就会联想到内置应用程序所支持的标准任务和模式。如果您的应用程序支持一些标准功能(比如刷新内容区视
图或删除一项),或者会显示不同的数据子集(比如联系人或书签),一定要使用系统提供的相应按钮或图标来表示它们。关于标准按钮和图标的完整列表,以及如
何使用它们的指南,请参考“系统提供的按钮和图标”
。
当然,并不是应用程序所执行的每个任务都是一个标准功能。如果您的应用程序支持一些用户需要频繁执行的自定义任务,您需要创建自定义的图标,用于在工具栏
或导航栏中代表这些任务。同样,如果您的应用程序显示了标签栏,允许用户在自定义的应用程序模式之间,或者自定义的数据子集之间进行切换,你需要设计自定
义的标签栏图标,用于清晰地描述这些模式和子集。本节向您介绍如何设计出能够很好地用于导航栏,工具栏和标签栏的图标。在您为图标创建美术图案之前,您需
要花些时间想想该图标应该传达些什么信息。当您考虑设计的时候,请以这样的图标为目标:
在您确定了图标的外观之后,请在创建时遵循以下准则:
注意:
您为工具栏,导航栏和标签栏提供的图标在您的应用程序中将用做创建图标的蒙板。没必要创建全彩色的图标。
iPhone OS自动为导航栏,工具栏和标签栏中的项目提供了被按下或被选中时的外观,因此您只需要提供图标的单个版本。由于这些视觉效果是自动呈现的,您无法改变它们的外观。
发表评论
-
Objective-C 与 C++ 的异同
2013-04-02 12:03 1357http://www.cnblogs.com/y041039 ... -
Cocos2D-X是全球知名的开源跨平台手机游戏引擎
2013-01-22 10:05 2710http://www.oschina.net/p/cocos ... -
iOS Keyboard 键盘高度变化 自适应
2013-01-15 15:43 3218[[NSNotificationCenter default ... -
iOS使用自定义字体
2012-11-27 12:11 12075From: http://blog.csdn.net/csy1 ... -
4 款类似 Facebook/Path 切换效果的 iOS 组件
2012-11-27 12:03 2088From: http://blog.csdn.net/lia ... -
Path 2.0的UI界面设计详细介绍
2012-11-27 11:56 1426如Path的创始人Dave Morin ... -
史上最全的App Store邮箱列表
2012-11-27 11:51 1217From: http://roybaby.blog.51cto ... -
iOS从info.plist 获取项目的名称及版本号
2012-11-16 10:54 1574From: http://blog.sina.com.cn/s ... -
MapKit annotation drag and drop with callout info update
2012-10-13 10:38 2362http://hollowout.blogspot ... -
NSArray 或NSDictionary 调用writeToFile方法失败原因
2012-08-31 10:03 4421NSArray 或NSDictionary 调用writeTo ... -
如何让IOS应用从容地崩溃
2012-08-30 15:25 1570From: http://www.cocoachina.com ... -
iOS中判断设备系统版本
2012-08-29 17:17 31668在iOS开发中,经常要考虑系统的向下兼容,如果使用 ... -
iOS 汉字转拼音
2012-08-21 16:42 1421From: http://www.cnblogs.com/v2 ... -
iOS模拟器截图工具
2012-08-17 16:35 1583From: http://magicalboy.com/ios ... -
XCode下的iOS单元测试
2012-08-10 17:47 1119From: http://mobile.51cto.com/ ... -
AFNetworking
2012-08-08 10:54 4618AFNetworking on github: https:/ ... -
Wrapping Conventions
2012-08-01 15:54 778Wrapping Conventions ... -
Core Animation如何使显式动画结束时的值直接作用Layer
2012-08-01 14:51 3746(1)使用隐式动画会直接改变layer的属性值,如: ima ... -
How To Debug Memory Leaks with XCode and Instruments Tutoria
2012-07-31 16:30 1017From: http://www.raywenderlich. ... -
Using Properties in Objective-C Tutorial
2012-07-31 16:27 878From: http://www.raywenderlich. ...
相关推荐
iOS人机界面指南
苹果的ios人机界面指南(2012-12-17版),英文
iOS9人机界面指南 人机交互设计 基础必备
【为 iOS7 而设计】 [以内容为核心] [以内容为核心] [用深度来体现层次] 【为 iOS7 而设计】 【起始与停止】 [即时启动] [时刻准备好停止] [布局] [导航] [模态对话] [起始与停止] 反馈能帮助用户理解 输入信息...
ios人机界面交互指南,以真实案例为依据讲解如何呈现更好的ios应用视觉效果,以及如何增加用户粘性和用户体验。
iPad的界面设计指导手册,和iPhone人机界面指南相对应,不过这个是英文版的。
ios人机交互指南中文版,包含人机界面设计原则,设计策略等,想要的朋友可以拿走了。
【译文】iOS人机界面指南——访问用户数据.docx
多个 IOS开发文档PDF 包括 iOS人机界面指导手册 iOS人机界面指南 iPhone OS编程指南 Objective-C_2.0_Mac和iOS开发实践指南
iOS的人机界面指南之App设计策略,转为IOS设计准备,值得一看
这是讲述iOS8下,UI设计中,人机交互界面的指导内容,你值得拥有!
iOS9人机界面指南一、二、三
腾讯力作,iOS9人机界面指南(一):UI设计基础
ios wow体验是@c7210翻译的《ios wow factor--apps and ux design techniques for iphone and ipad》外文书,关于ios体验方面的。压缩包里是html格式,打开可直接看。
IOS10人机界面设计指南.pdf
( IOS+10人机界面设计指南++中文 界面设计上的一些技巧
iOS关于界面设计与客户交互相关指导操作, 学习相关知识更利于开发一个受人欢迎的App.
为 iOS7 而设计 以内容为核心 保证清晰度 用深度来体现层次 iOS 应用解析 起始与停止 即时启动 时刻准备好停止 布局 导航 模态对话 交互性和反馈 反馈能帮助用户理解 输入信息过程需要简易 术语和措辞 动画 排版...
本文译自苹果推出的设计文档《iOS Human Interface Guidelines 》(2015 年10 月21日) , 由腾讯ISUX 商业产品设计中心以下设计师翻译整理:
iOS会处理打印机的发现,任务的排序以及在指定打印机上执行打印任务。通常来讲,用户想要打印文件的时候,只需要点击应用中的标准动作按钮(Actionbutton)。当他们选择了要打印的条目后,可以选择打印机,设置打印...