用新浪微博登录

只需一步,快速搞定

 找回密码
 立即注册

用新浪微博登录

只需一步,快速搞定

查看: 3701|回复: 2
打印 上一主题 下一主题

IOS平台UI规范(二)

[复制链接]

签到天数: 88 天

[LV.6]常住居民II

1458

主题

1万

帖子

3万

积分

管理员

游戏青春

Rank: 9Rank: 9Rank: 9

积分
34918

社区居民工蜂业余写手偶尔光临最爱沙发社区平民兵蜂做个有钱人认证用户在线达人略有小成渐入佳境常驻会员忠实会员常坐沙发蜂王小有名气知名人物沙发如床友好人士游聚十周年

跳转到指定楼层
楼主
发表于 2011-8-5 19:12:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 |          
6用户体验指南
iOS 设备的用户体验重点在用精简的交互控制用户关心的内容。本章的指南适用于所有iOS 设备的应用。
关注主任务
当程序使用聚焦于它的主任务时,使用起来一定神清气爽。你对程序的定义能帮助你将程序的功能聚焦在主任务上(见明确程序定义)。为保持专注,你需要明确每一屏上最重要的是什么。
分析每一屏需要什么。当你确定在每一屏上呈现什么时,始终问问自己,这是否是当前用户需要的关键信息或功能。如果答案是否定的,想想这些信息或功能在另一个环境中是否关键,又或者这些东西并没有那么重要。
例如:iPhone 日历关注日子以及发生于某日的事件。用户可以用明确标注的按钮高亮今天,选择浏览方式,以及添加事件。
提升用户关注内容的权重
在游戏中,用户关注感官体验;他并不希望管理、消费或者创造内容。如果你在开发游戏,可以通过提供惬意的故事、漂亮的图片和反馈及时的游戏操控来提升体验。
如果你开发的不是游戏,可以通过为用户感兴趣的信息设计微妙的框架结构来帮助用户关注内容。这里是一些你可以做的事:
减小控件的数量和显著性,降低它们在界面中的权重。Photos 通过在透明的工具栏上放置几个不突兀的控件来达成这一目的。
微妙地设计控件,使它和程序的图片风格一致起来。通过这种方式,控件既容易被发现、理解,也不会太突兀。
在用户不再与使用控件一段时间后,让它们渐隐消失。当用户敲击屏幕时再出现。有时你会想让程序的其他界面部分也渐隐。这对于需要营造卷入感的程序由其合适,因为这空出更多的屏幕空间展示用户想看的内容。例如,Photos 在用户不使用控件一段时间后就将按钮和工具栏隐去,以便让用户更关注内容。当用户想对照片进行操作时,随处轻轻一敲,控件就又出现了。

自上而下思考
屏幕顶部的内容最易被用户看到,因为用户是以如下方式使用iOS 设备的:
用非利手(一般为左手)拿着,或者放在一个平面上,使用利手的手指做手势用一只手拿着,同时用该手的拇指做手势双手端着,用两只手的拇指做手势
把最常用的信息放在顶部附近。这里更容易被看到,也容易触摸。当用户自上而下浏览屏幕时,呈现的信息应从概括向具体渐进,从高级向低级渐进。(from general tospecific and from high level to low level
例如,在游戏中,最常用动作被放置在屏幕的上半部分。下半部分的屏幕用于呈现辅助性信息和控件。
让用户有逻辑可循
让你展现信息的流程富有逻辑,易于被用户预测。另外,一定要提供标记,比如返回按钮,让用户知道他们在哪,如何追溯来时的足迹。
大多数情况,只提供单一的路径。如果很多情景都可能有通往某一屏的路径,可以考虑使用能在不同环境出现的模态化的展现方式。(可能是指的弹出层这类元素吧,model view
使用方法明显、易用
努力让用户一眼就看出你的程序怎么用,因为你不能假设用户都有时间来思考程序是怎么工作的。
第一时间呈现程序的主功能。可以使用这样的方法:
尽量减少控件,让用户不必思考该如何选择
一致且和实地使用标准控件和手势,以便程序的行为符合用户期望控件名称清晰易懂,让用户明确知道自己在干什么与内置程序的使用方法范式保持一致。
用户知道如何在各层级的屏幕间导航,编辑列表内容,使用tab 切换程序模式。可以通过不断增强这种体验来让用户简单地使用你的程序。
在内置的Stopwatch 程序中,用户一眼就能到那个按钮触发秒表,那个按钮用于记录每个人的时间(capture lap times)。


使用以用户为中心的术语
所有用于与用户沟通的文案,都需要保证你的用户能够理解。特别的,避免使用行业术语。多了解你的目标用户,以判断所使用的文案是否适用于他们。
这个wi-fi 设定使用朴素的语言解释iOS 如何反馈用户的偏好设置。



减少对用户输入的需求
无论是触摸控件还是使用键盘,输入信息劳神费力。如果你的程序在提供有用信息前要求用户输入一大堆信息,用户就会对你的程序失去兴趣。
平衡用户的输入与你为用户提供的信息。换句话说,为用户输入的每条信息提供尽可能多且有用的信息和功能作为回报。这能让用户觉得他们在向目标前进,而非被你的程序拖后腿。
简化用户的输入方式。例如,可以使用表格或者拾取器,而非文本框。因为选择远比输入来的简单。
在合适的时候,从iOS 获取信息。用户在设备上存了很多信息。如果你能从设备中很轻易的找到这些信息,就别麻烦用户了。比如说通讯录、日程表等。
不要重视管理文件的操作
虽然iOS 可以帮助用户创建和管理文件,但这不意味着用户应当清楚地认识iOS 设备上的文档系统。
iOS 上没有和Mac OS X Finder 相似的程序。不要要求用户像使用电脑那样管理文件。
不要强迫用户面对任何鼓励他们思考文件元数据的东西。例如:
一个展示文件层级的打开或保存对话框
文件权限状态的信息
相反,iOS 设备的文档管理程序应该鼓励用户将内容视作可供管理的物体。
如果你的程序容易用户创建和编辑文档,就应该提供让用户拿来打开已有文件或创建新文件的文档拾取器(document picker)。它应该:
高度图形化的。用户应该能通过图形化展示的文件迅速找到想要的文件。(比如ibook的书架)
容许人们用尽可能少的手势就完成任务。例如,用户在已存在的一堆文档中水平翻页,然后轻触一下想要的那个。
包括一个新建文档功能。不要让用户到处找新建文档的按钮,可以用一个空的占位符图片作为新建文档的按钮。
也可以在你的程序中使用Quick Look Preview 功能预览文档,即使你的应用无法打开这类文档。欲知更多,详见快速文件预览
容许协作和联通
iOS 设备是私人物品,但也鼓励与他人进行协作和分享。
在合适的时候,简化与别人的交互,分享诸如位置、设置、最高分等。人们普遍希望分享对他们重要的信息。
大多数程序可以通过容许人们突破程序壁垒,与其他工具共享数据的方式加分。例如,iOS 程序可以作为电脑程序的补充。或者,iPad 程序可能会容许用户与该程序的iPhone版通讯。
对于iPad,要设想多人共用一台iPad 的情景。例如,两个人可能在屏幕的两边玩对战游戏。或者模拟乐队的程序容许多个人在同一设备上一起玩不同的乐器。
弱化设置
如果可以的话,避免在程序中加入设置模块。设置包含偏爱的程序行为和信息,这些设定很少会改动。用户必须先退出程序,才能设置程序偏好。这绝非你想要的。
当你把程序设计的符合用户期望时,设置的重要性就降低了。如果你需要用户的信息,去问iOS,而非拷问用户。如果你确信设置不可或缺,请参阅“iOS Application Programming Guide “The Settings Bundle”
让用户在程序中用配置选项(configuration options)来设置偏爱的程序行为。结构选项可以让程序在运行中动态响应用户的设置,用户不想离开程序再来设置它。
在主界面上提供配置选项,或者在屏幕的背面。选项对任务的重要度和使用频率将决定把控件放在哪里更合适。
n 在主界面中,放置与主任务相关或者用户要经常更改的选项。
例如,iPad Calendar 允许用户以日、周、年为单位浏览日程表。这些配置选项被放置在主界面上,因为以不同方式查看日程是用户的主要任务,而且会经常切换。
游戏等注重即时体验的程序也应提供配置选项。因为用户经常会在各种体验间往复切换。
n iPhone app 中,可以将用户很少改变的选项放在屏幕背侧。例如,Weather 主任务时展示某城市当前的情况和6 天的预报。虽然选择温度是摄氏还是华氏很重要,但已经改变就不会再经常变动。所以可以把温度单位的设置放在屏幕背后,这样可以方
便的拿到,同时也不碍眼。
品牌宣传要适当
精心准备品牌的颜色或图片。当品牌设计的非常微妙、易懂时是最有效的。用户用你的程序是为了做事情或者娱乐,他们不想被迫看广告。为了最佳的用户体验,你对品牌的宣传要轻轻的。
避免和用户关注的内容抢占空间。例如,在屏幕顶部展示另一个一直呈现的工具栏,啥事儿也不干,只是放个商标,就会占用本应属于内容的空间。可以想想其他不会太打扰用户的方式,比如微妙地处理下屏幕背景(译者按:弄成80%透明铺在背景上什么的)。
搜索要反应迅速、结果丰硕
在那些需要操控或展示海量数据的程序中,搜索是一个主要功能。如果你需要在程序中提供搜索,建议遵循以下指南:
建立索引,时刻为搜索做好准备。不要等用户请求搜索时才做,你不想让程序给用户留下不好的印象吧?   
动态过滤本地信息,以便快速反馈展示结果。最好是在用户输入的时候就动态的过滤信息,在用户继续输入时精炼结果。虽然动态过滤信息通常能提供顶级的用户体验,但并不总是现实的。当动态过滤不现实时,你可以在用户点击键盘上的搜索键时开始搜索。
这样做时,要对搜索过程提供进度反馈,这样用户就知道没卡壳。
可能的话,也可以在用户输入时过滤远程数据。虽然过滤用户的输入能提供很好的搜索体验,但如果响应时间可能延迟一到两秒时,要征求用户同意。
在列表或列表索引的顶部放置搜索框。用户希望在这个位置找到搜索框,因为他们已经习惯了Contacts 等应用中的放置习惯。在这里放置搜索框意味着用户翻滚列表或索引时不会有什么干扰,但又能在需要的时候方便地获取。
只在一些特殊的情境中为搜索提供tab。如果搜索在你的程序中戏份很重,那你可能会想在一个独立的模式中进行搜索。在iTunes 中,寻找和获得音乐、播客是程序的重点。
用户想要在任何模式下都能迅速找到他们最爱的歌曲、艺术家、播客。所以放置一个随时可获得的搜索tab 是可以理解的。
有必要的话,放一些空的占位符,等数据可用时再去丰富它。通过这种方式,你可以敏捷地为用户提供信息。在某局域网中不存在的视频门户网站上,用户在点击搜索按钮后触发了搜索请求。如果网速很慢,该网站先展示动态的“loading„”,这样用户就知道搜索在进行中。然后,该网站展示只有文本信息的列表,比如视频标题和用户评分,以及代表视频截图的虚线框。当用户浏览视频标题列表时,视频缩略图就逐渐将虚线框替代掉了。
如果数据可以自然地分为几类,就提供一个scope barScope bar 包括最多四个scope按钮,每个代表一类。例如,Mail 提供的Scope bar 使得用户可以只关注”“标题,或者在全域内搜索。Scope bar 帮助用户将搜索聚焦,显著地减少结果数量。欲知详情,详见范围栏(Scope bar

要在App Store 提供精炼的描述
App Store 中的描述是一个与潜在用户沟通的绝佳机会。除了准确描述程序、高亮你觉得用户最喜欢的特性外,请遵守如下指南:
避免拼写、语法和标点错误。虽然这样的错误并不会让每个人都心生厌恶,但会给某些人留下不好的印象。
避免使用大些字母。大写字母会吸引用户的注意,但是每个词的每个字都用大写会让用户难以阅读。
写出对具体bug 的修复。如果新版本的程序对老版的bug 进行了修复,最好在描述里提一下这部分工作的付出。
精炼
像报社编辑一样,尝试把信息写得像报纸标题那样干练。当界面文案简短直接时,用户能迅速明白意思。找到最重要的信息,简练地表达出来,放在显著的位置。这样用户就不必阅读完一大堆文字才找到想要的信息,或是知道下一步应该怎样。
界面元素要一致
用户期待标准的视图和控件,在所有程序里都有一致的外观和行为。
使用标准控件时尊重推荐的使用方法。这样,用户能在学习程序时利用先前的经验。
iOS 升级标准控件时,你的程序也能得到更新。
对娱乐性应用来说,有必要定制全套控件。这是因为你在营造独特的环境氛围,用户待在这类程序中探索如何控制环境。
避免彻底改变执行标准动作的控件的外观。如果你使用不熟悉的控件来执行标准动作,用户会花时间研究如何使用它,还会迷惑为什么你的个性控件干着标准控件的活。
iOS 准许你使用很多内置程序中的标准按钮和图标。例如,你可以在iPhone iPad 使用Mail 的刷新、排序、删除、重播和书写图标。

为避免迷惑用户,绝不要使将标准控件和图标用于其他用途。确保你懂得文档上对标准控件、图标用途的描述。不要依靠你对它外观的解释。欲知详情,详见系统提供的按钮和图标
除了利用用户已有的经验外,使用系统标准控件还有两个好处:
减少开发时间,因为你不用再去画皮肤了。
增加界面的稳定性,即使将来iOS 升级会改变标准控件。换言之,虽然图标外观会升级,但它代表的语义是不会变的。
界面编辑器降低了调用标准控件和图标的工作量。请详见“Interface Builder UserGuide”“iPhone OS Interface Objects”
如果你在系统提供的控件和图标里找不到合适的,你可以自己制作按钮和图标。导航栏、工具栏和 tab 栏上用的图标这一章可以提供一些指南。
考虑增加真实感
合适的时候,给你的程序增加一些真实感。通常,程序的外观和行为与真实生活越相近,用户越容易理解如何使用它,也越喜欢用它。例如,用户立刻明白如何使用iPad Contact 上的地址簿。
iPhone 上,用户立刻懂得声音记事簿的作用,并学会使用它,因为它有高精度皮肤以及外观真实的控件。


设计的场景和物体是向用户表达产品灵魂的绝佳机会。别觉得你必须小心翼翼力求完全一致。有时,略作夸张反而比一板一眼看起来更加真实,携带更多意思。
用动画强化真实感。运动比外观更强调精确。这是因为人们能接受外观的艺术化,但看到违反物理定律的运动会眩晕。尽可能的让你的控件模仿真实物体的运动方式。真实可信的运动会提升用户对程序的印象,也愿意花时间来玩它。
用绝佳的图片取悦用户
漂亮的、精致的图片吸引人们使用程序,即使很简单的任务也用得很开心。漂亮的美工也能在用户心中树立品牌形象。iOS 设备对美工有很好的表现力,所以你应该考虑聘用专业的艺术家绘制一流的皮肤。
考虑模仿宝贵的或质地优良的原料的外观。如果木头、皮革、金属的效果适合你的应用,一定花时间确保皮肤看起来真实、贵重。例如,Notes 模仿了优质皮革赫尔金属铆钉的外观。

合适的时候,绘制高精度的画作。大多数情况,放大你的视觉稿并不是一个值得推荐的长期解决方案。应该在比你所需的精度高一级的等级上开始绘画。这样你就可以在压缩它之前添加丰富的细节。这在当你原始稿尺寸是终稿尺寸的整数倍时尤其有用。如果你在图形绘制软件中使用了合适尺寸的网格,就能保证图像在缩小尺寸的过程始终细腻,减少重新锐化的工作量。
确保你的登陆图像和程序图标做工优良。欲知详情,详见定制图标和图片指南 不要把屏幕尺寸的参数写死。这在你希望程序可以在多种iOS 设备上运行时尤其重要。
处理好方向改变
用户希望能以任何角度使用iOS 设备。你需要基于你的程序和它支持的功能,确定如何响应用户的殷切期望。
无论什么方向,都保持对主任务的关注。这是优先级最高的准则。用户使用你的程序来浏览或操作他们关注的内容。如果改变方向后,程序不再展示之前的核心内容,会让用户觉得失控了。
如果程序不准备对各个方向提供支持,要再三斟酌。用户希望能在任意角度使用你的程序,你如果能满足这个愿望就太棒了。iPad 用户尤其希望无论他们怎么端着设备,都能正常使用程序。但在某些情况下,程序只能在竖屏模式或横屏模式下运行。如果你
的程序只能在一个方向上使用,确保以下几点:以你支持的方向启动,忽略当前的设备方向。例如,如果你的游戏或者媒体播放程序只以横屏模式显示,就应该在启动的时候就用横屏模式,即使设备是以竖屏模式放置的。这样,如果用户在竖屏模式打开它,他们就知道应该把设备转过来,再浏览内容。
避免在界面上用文字等告知用户把设备转一下。以你支持的方向启动已经明确告知用户要旋转设备,不要再添乱了。
无论只支持横屏模式还是竖屏模式,要支持这种模式下的两种方向。例如,如果你的程序只以横屏模式运行,用户无论是以home 键在左边还是在右边拿着设备,都该能用。而且,如果用户在使用你的程序时把设备转了180 度,最好你能把内容也跟着转180 度。
如果你的程序把设备的角度作为一种输入信息,你可以按程序的需要处理旋转。例如,如果你的程序是个游戏,容许用户旋转设备来控制方块移动,屏幕就不用在设备旋转时跟着转了。这种情况下,你应该在游戏开始前让用户选择好以哪种方向来玩。等游戏开始后,就可以按照程序自定义的方式去处理屏幕旋转了。
利用特定的转场动画效果来实现平滑旋转。如果你的屏幕布局很复杂,当用户旋转设备时最好使用“corss-fade”转场。UIViewController 类的reference 里有对“HandlingView Rotations”的解释。
留意加速度。欲知详情,详见“Core Motion Framework Reference”
iPhone 上,在应对设备方向改变时要留意用户的需求。用户经常把手机横过来,是为了想看到更多。如果你仅仅是缩放了一下内容,那么就没满足用户的期望。你应该重新进行页面布局,以更好地适应屏幕。
iPad 上,要在所有方向下都能运行,尽力满足用户需求。iPad 的大屏幕诱使用户在想看到更多时旋转屏幕。由于用户不关注设备的外框和home 键的位置,他们不觉得设备有默认的放置方向。这导致用户希望程序能以他们正在使用的方向运行。你的程序应该尽可能的通过支持各个方向来鼓励用户以各种姿势使用iPad
当你的程序需要处理旋转时,请参照以下指南:
考虑改变展示辅助信息和功能的方式。在保证最重要的内容始终在视野范围内的前提下,可以考虑在设备旋转时改变次要信息的呈现方式。
iPad Mail 上,账户和收件箱列表是次要内容,邮件是主要内容。在横屏模式下,次要内容放置在分栏的左侧;在竖屏模式下,放置在弹出层里面。
再比如,横屏模式下,游戏的外面有矩形框。转成竖屏模式后,外框需要重绘以适应屏幕。这会导致上下边缘会有大块空白。此时不应把画面纵向拉伸,而应在空白区域填充辅助信息或物体。
避免随意改变布局。应该在各种方向下提供统一的体验,这使得用户可以在旋转设备后沿用使用习惯。例如,如果iPad 在横屏模式下用网格显示图像,竖屏模式下就不应用列表来展示图像。
如果可能的话,应该尽量避免重组信息,重排文字。尽量在各种方向保持相似的格式,尤其是当用户阅读文字时,避免旋转屏幕后用户找不到刚才读到的地方。
如果重组不可避免,使用动画帮助用户追踪变化。例如,如果你必须在旋转时增减文字的栏数,你也会选择把栏的运动藏起来,简单地让新的排版渐现。为了帮助你设计合适的旋转动作,想想当你旋转真的纸时会对内容的变化有怎样的期待。
为每一种方向提供独特的启动图片。如果每种方向有独特的启动图片,用户就能在每种方向下都能体验到平滑的程序启动。与iPhone 的桌面不同,iPad 的桌面支持各个方向。所以用户可能会以退出上一个程序的方向启动你的程序。
让目标符合手指的尺寸
iOS 设备的屏幕尺寸会变,但手指的尺寸不会变。请遵循以下指南,以便用户能舒适地使用你的程序。
给你的可触摸元素至少44×44 像素的面积。iPhone Calculator 就是一个很好的符合指触面积的控件。
如果你的控件更小,或者放置过密,用户必须在触摸前很小心地瞄准目标,而且很可能会按错。这样的话,程序用起来就不那么爽了,甚至会完全不可用。例如,控件太小太密的话,用户必须全神贯注在界面上。
使用微妙的动画表达
动画是很有效的表达方式,它不会妨碍用户的任务、拖用户的后腿。微妙、适当的动画应该做到:
表达状态
提供有用的反馈
增强直接控制的感觉
将用户行为的结果视觉化
慎重地添加动画,尤其是在那些非娱乐性程序里。在那些严肃的,用于创造内容的程序里,过多的、无意义的动画会阻碍操作流,降低性能,把用户从任务中诱走。
合适的时候,保持动画效果与内置的程序一致。用户习惯了内置程序的微妙动画。事实上,大多数用户将视图间的平滑转场,设备旋转后的流畅反应和逼真的翻页、反弹视作iOS 体验的一部分。除非你在设计娱乐性程序,否则就应将定制动画和内置动画协调起来。
程序内部的动画保持一致。就像其他定制一样,保持一致可以让用户依赖从你的程序中学到的经验。
恰当地支持手势
避免将别的动作与标准手势的效果联系起来。避免用定制的手势去诱发标准手势的效果。
使用手势来加速任务的完成,但不要作为唯一的完成手段。虽然用户大多知道很复杂的标准手势,比如水平滑动(swipe)或分开手指,这些姿势却没那么普遍。
例如,当在Mail 中浏览邮件列表,用户通过展开预览栏,单击其上的删除按钮来删除邮件。用户可以通过两种方式展开删除按钮:
单击导航栏中的编辑按钮,每一行预览上都会出现删除控件。然后单击特定行的删除控件,就能展开删除按钮。
这种方式步骤冗余,但容易找,因为它只需要触摸动作,并且是以清晰的编辑按钮为起点。
在预览栏上水平滑动,删除按钮出现。
这种方式更加快捷,但是需要用户学习,记住水平滑动的手势。
确保总是有一种简单直白的方法完成操作,即使操作步骤多一些。简单的手势允许更关注内容和体验,而非交互动作。
一般而言,避免定义新手势。当你引入新手势时,用户需要费心去发现新手势并记住它。
开发娱乐型程序是个例外。例如,要求用户在列表项上画圈以展示删除按钮将会是非常困惑且难用的。但是在游戏中可能需要用户画圈以旋转某个器件。
确保你采用的手势与程序的功能以及用户的期望相适应。如果用户要经常使用程序中的某个功能,希望越快完成越好,你应该只使用标准姿势。但是,如果你的应用包含逼真的控件,或者环境让用户很有探索欲望,定制手势也是可以的。对于标准手势,请详见程序响应手势,而非点击
对于iPad,可以考虑多点触摸手势。iPad 硕大的显示屏为定制多点触摸手势提供了空间。虽然不是每个程序都适用复杂的手势,但它可以让那些用户长时间使用的程序具有更丰富的体验,例如游戏或者创造内容的环境。时刻谨记非标准手势很难被发现,不应是完成某任务的唯一途径。
只在必要的时候要求用户存储
用户应该有信心,他们的工作总是自动保存,除非自己按了取消或删除。如果你的程序帮助用户创建或者编辑文档,要确保它不需要明显的保存按钮。iOS 程序应对保存用户的输入负起责任,可以按周期进行,并在用户打开其他文档或退出程序时进行。
如果主要任务不是产生内容,但允许用户在浏览信息和编辑信息间切换,那么要求用户保存变动是合理的。这种情况下,在展示信息的视图模式下呈现编辑按钮是个好办法。当用户触摸编辑按钮时,可以用保存按钮替换它,并增加一个取消按钮。编辑按钮的变化提醒人们现在进入编辑模式。取消按钮可以让用户不保存任何变动,恢复到编辑前的状态。
对于iPad,保留那些用户在浮出层输入的信息。因为用户有时会不小心把浮出层关掉。更多信息,请详见浮出层(只限 iPad   
让模态化任务表现地暂时且简单
可能的话,尽量减少进入模态化环境执行任务或提供反馈的次数。iOS 应用应该允许用户与iOS 任意地交互(nonlinear)。模态通过打断用户的工作流,强迫用户完成一系列操作来剥夺自由。
模态在以下情况最为适用:
很有必要获得用户的注意
没有用户明确提供的数据,该任务无法完成
用户很喜欢在模态视图里完成一个子任务,因为场景转换清晰且短暂。但是如果子任务太过复杂,用户会在进入模态视图后迷失主任务。当模态是全屏模式的或有很多分支状态时,风险还会加剧。
保持模态任务简短精炼。你应该不想让用户觉得模态任务是嵌在你程序里的一个小程序吧?千万注意别让模态任务有层级结构,因为用户很容易忘记回去的路。如果模态任务必须包括子任务,一定要给用户一个单一、清爽的路径来浏览层级结构,避免环形路径。
在模态任务中总是提供明显、安全的出口。用户应该总是能够在离开模态时预测他们工作的命运。
如果任务需要分层级的模态,确保用户明白如果他们点击子级页面上的Done 按钮后会有什么结果。检查一下任务,看看子级页面上的done 按钮按下后是结束了那一小部分任务还是结束了整个任务。可能得话,避免在子级页面加Done 按钮,这真的很让人困惑。
立即启动
iOS 程序应该在用户想用它们的时候立刻启动,毫无延迟。在启动时,iOS 程序应该:
展示与应用程序第一屏一样的启动图片。这可以缩短对启动时间的知觉。
避免呈现关于窗口或者splash。一般而言,避免添加任何阻碍用户立刻使用程序的元素。
iPhone 上,提供合适的状态栏样式。通常,状态栏要和程序的其他界面部分风格一致。
以合适的默认方向启动。在iPhone 上,默认的方向竖屏模式。在iPad 上,默认方向是当前设备的方向。如果你的设备只支持横屏模式,就按横屏模式启动,不用管设备当前的方向。用户会去旋转设备的。
只支持横屏模式的应用应该支持两种方向的横屏模式(Home 键在左或在右)。如果设备已经是横屏模式了,那就直接以此模式启动,除非有别的很好的理由。其他情况下,程序应以home 键在右侧的方向启动。
避免向用户询问设置信息。应遵照以下指南:
只为80%用户解决问题。这样的话,大部分用户不需要设置,因为你的程序已经按他们期望的方式设置好了。如果某个功能只有一点点用户会用到,或者用一次就扔,这样的功能还是放弃吧。
从用户以外的地方获得尽可能多的信息。如果你要用到任何用户在内置程序中储存的信息,可以向系统提出请求。不要让用户再输一次。
如果你必须从用户那获得信息,要让用户在程序内进行输入。然后尽快把这些信息存下来。这样,用户就不用先退出程序才能进到iOS 设置里。如果用户稍后还需要更改这些信息,他们可以在任何时候到程序的设置模块。
从程序上次离开的位置启动。记住如何回到上一次退出的位置不应是用户的责任。

随时准备停止
iOS 程序需要在用户按下Home 键的时候停止,然后打开别的程序。所以用户不会点击程序的关闭按钮或是从菜单里选择退出。为了提供好的退出体验,iOS 程序应该:
经常且快速保存用户进度。因为用户可能在任何时间选择退出。
停止的时候保存当前的状态,尽可能的保留细节。这样用户再次打开程序时不会损失细节。例如,如果你的应用展示可翻页的数据,保存当前的翻页位置。
不要自动退出
绝对不要自动退出,因为用户倾向于觉得是程序崩溃了。如果你的程序确实无法像预期的那样工作,你需要告知用户当前的情景,解释他们可以做什么。基于当前情景的危机程度,你有两种选择:
展示一屏吸引人的内容,描述当前的问题,提供修正。这屏内容告知用户程序没出问题。它给予用户控制权,让他们决定是采取补救措施还是忽略报错,又或是按Home 然后打开别的程序。
如果只有部分功能失常,那就在用户使用这些功能时弹出警告框。
有必要的话,展示许可证或者免责声明
如果你提供终端用户许可协议EULAApp Store 会把它展示出来。用户能在获得程序前阅读到它。
可能的话,避免用户在第一次运行程序时必须同意你的协议。没有协议的话,用户可以立刻享用你的程序。但是,即使这是更好的体验,但并不适用所有情况。如果你必须让用户签署协议,要让签署过程与你的界面和谐相处,减少对用户的打扰。
可能的话,在程序描述或者EULA 中提供免责声明。用户可以在App Store 中浏览它,你可以平衡商业需求和用户体验。
适用于iPad:增强交互性(别只增加功能点)
最好的iPad 用户给用户创新地与内容交互的体验,同时帮助用户完成任务。
忍住添加与主任务无关的功能点。探索让用户看更多、用更多的方法。不要以为iPad屏幕大是为了让你把iPhone 版程序上被砍掉的功能再找回来。
为了让你的程序与众不同,想一想怎么提升用户体验,不要让琐碎的功能点干扰主任务。
例如:
一个让用户可以读书、持续跟踪阅读列表的程序可以在大屏幕上给用户带来优越的阅读体验。用户不必切换到其他屏幕去管理阅读列表,就可以在弹出层里让用户把喜欢的章节复制进去。这个程序还容许用户添加书签和标注,和他人交换书单,比较阅读进度。
一个战斗机游戏可能会在屏幕前蒙一层半透明的头盔。玩家可以触摸逼真的控件迎敌,或者在地图上定位他们。
足球游戏可以展示一个更大更真实的球场以及细节更好的球员。用户可以管理队伍,定制球员。它还可以允许用户不离开球场视图就查看球员信息。它还支持多人模式,两个人可以各用一队。
记事本程序可能会提供在手绘模式与文字模式间切换的功能。用户在记录的时候可以在这些模式间切换。
适用于iPad:减少全屏转场
哪部分内容变了,就只有哪一部分转场。在某些信息变化时,不要呈现全新的一屏,尝试只是更新这一块小区域。只转换部分视图和物体,不要换全屏。大多数时候,不建议做整屏切换。
每次只切换一部分屏幕的话,你的程序看起会很稳定。这帮助用户追踪他在任务中的位置。你可以使用分栏显示、浮出层等方式取代全屏切换。
适用于iPad:抑制你的信息层级
使用大屏幕和iPad 特制的UI 元素,让用户可以在一个地方获取更多信息。虽然你不想把太多信息打包到一个屏幕上,你也不想让用户有必须到不同屏幕上找东西的感觉。
一般来说,主要内容集中在主屏幕上,额外信息或工具用辅助手段展示,如popover
这使人们容易获得他们所需要的功能,无需离开的主任务环境。
使用ipad 的大屏幕以及分栏视图和popover 等界面元素,你不必再像iPhone 那样每屏展示一级。例如,你可以:
在右侧分栏放置一个导航栏,让用户沿层级结构向上回溯到顶级类目。该类目始终展示在左侧分栏中。这至少可以让你的层级结构极少一级。因为同一时刻屏幕上至少有两级内容。
在左侧分栏放置一个导航栏,让用户追溯一个比较浅的层级结构。然后,把最细一层的内容呈现在右侧分栏里。这样同样可以通过同时呈现两级内容来简化层级。例如,以风机视图模式使用Mail 时就使用了这种设计,在左边分栏展示账户、收件箱、邮件列表,右边分栏展示每一份邮件的内容。
使用浮出层实现操作或呈现用于操作屏幕上事物的工具。浮层可以在当前屏幕的顶部临时地展示操作和工具,这就意味着用户不必转场到其他屏幕来做这些事情。例如,竖屏模式的Mail 使用浮出层来展示账户、邮件箱和邮件列表的层级结构。
在工具栏上提供分段控件,来切换不同的信息呈现方式和不同的信息分类。这样,你可以通过点击屏幕顶部或底部的一个按钮来展开浮层,切换浏览方式或分类。更多信息,请详见工具栏分段控件。例如,iTunes 在顶部工具栏提供分段控件,来切换某一类内容的浏览方式。
使用tab 栏切换不同信息类别或者程序模式。在iPad 程序上,tab 栏更有可能被用于过滤器或者类目切换,而非模式切换。例如,iTunes 使用tab 栏切换不同类型的媒体。可能的话,避免使用tab 栏切换全屏,因为iPad 上最好减少全屏切换的场景。



适用于iPad:考虑将浮出层用于不同模态的任务
在浮出层打开或处于模态视图下时,用户不能与主屏幕交互,在这一点上两者是相似的。
但是模态视图总是模态的,而浮出层可以有两种用法:
模态的:浮出层出现后,降低周围区域的亮度,需要用户主动点退出。这种情况与模态视图非常相似,但浮出层给人的感觉更轻一点。
非模态:浮出层周围的区域不会变暗,用户可以点击浮出层周围的任何区域来清除浮出层(发出激活浮出层的按钮)。这种行为方式让非模态浮出层看起来像从另一种角度观察程序,而非进入另一种状态。
另外,浮出层总是有一个小箭头,指向激活它的按钮或区域。这个线索帮助用户记住他们是从哪里进入现在这个场景中的。这也使模态浮出层看起来只是暂时的,而不像模态那样,不提示是怎么进入到模态中来的。
如果你在iPhone 中用模态视图来呈现任务,可以换浮出层试试。思考以下问题可以帮助你判断使用浮出层是否合适:
该任务是否需要不同类型的输入?Y?用浮出层吧,虽然键盘兼容浮出层和模态视图,但浮出层更适合展示拾取器或一列选项。
该任务是否需要在多个层级的视图间穿梭?Y?用浮出层吧,浮出层更适合展示多个页面,因为用户不容易把它和主页面弄混。
用户希望能在任务完成前去主页面上干点什么吗?Y?用非模态浮出层吧,因为用户可以在非模态浮出层周围看到主页面。轻轻一点主页面,浮出层就消失了。
记得保留浮出层里的任务进度,用户还可能再回来的。
任务足够复杂吗?是否是程序的主要功能?Y?用模态视图吧,模态视图伴随很大的转场,帮助用户专注于任务直至完成。模态试图的面积也足够大,可以放置更多的输入控件。
如果此任务是程序的主要功能,但是不是很深,模态化的浮出层会更为合适。这是因为浮出层的轻盈更适用经常执行的任务。
如果,任务只执行一次或寥寥数次,比如安装过程??用模态视图吧。当用户只需要做一次任务的时候,他们不是很关心当前的环境。
还有些popover 的其他用法,比如说提供辅助工具(更多信息,请详见浮出层(仅限iPad)。而且,iPad 还可以吧操作列表放在浮出层里(更多信息,请详见操作列表)。
如果你决定使用模态视图,请查阅有哪些样式可供使用(更多信息,请详见模态试图

适用于iPad:考虑将浮出层用于不同模态的任务
如果你的程序有工具栏,把它移到屏幕顶部吧,别放在下面了。iPad 的屏幕非常宽,顶部的一条工具栏足够放下所有的功能。这给你更多的垂直空间展示核心内容。
例如,iPhone Mail 在浏览邮件页面的工具栏上放置了刷新,管理,删除,回复和书写。
iPad Mail 在邮件上方的工具栏提供了其中四个按钮。刷新按钮移到了邮件箱列表。
绿肥红瘦www.gotvg.com 街机对战平台 拳皇97  ARC   FC MD SFC GBA PSP PS
既然来到人世间,注定会留下什么。
回复

使用道具 举报

该用户从未签到

272

主题

716

帖子

2119

积分

LV 9.会员

喵喵喵~~忽然发现,爪子可以剥桔

积分
2119

社区居民偶尔光临工蜂业余写手略有小成

沙发
发表于 2011-8-5 19:24:19 | 只看该作者
好东西,受教了~~~膜拜大神下~
回复 支持 反对

使用道具 举报

签到天数: 88 天

[LV.6]常住居民II

1458

主题

1万

帖子

3万

积分

管理员

游戏青春

Rank: 9Rank: 9Rank: 9

积分
34918

社区居民工蜂业余写手偶尔光临最爱沙发社区平民兵蜂做个有钱人认证用户在线达人略有小成渐入佳境常驻会员忠实会员常坐沙发蜂王小有名气知名人物沙发如床友好人士游聚十周年

板凳
 楼主| 发表于 2011-8-6 10:26:27 | 只看该作者
7iOS 技术使用指南
iOS 提供很多深得用户喜爱的技术,比如多任务、复制黏贴、推送提醒等。
从用户的角度来说,这些技术已经iOS 形象的一部分。但开发者只需必须十分小心谨慎,才能实现技术和用户体验的完美结合。
多任务
多任务帮助用户快速地在多个最近使用的程序间切换。当程序退出的时候,实际上是在后台被挂起了。挂起的程序不需要重载界面,所以可以快速恢复。用户可以在多任务管理器中选择最近使用过的程序。
要想在多任务环境中良好生存,必须学会与设备上的其他程序良好相处。这也意味着:
对其他程序导致的中断和带来的声音要妥善处理快速、平滑地停止和重启当处于后台时,要对行为举止负责任遵从这些指南可以帮助你在多任务环境中取胜。
随时做好中断和恢复的准备。多任务环境中,你的程序更有可能被后台的程序打断。
其他的特性,比如广告和快速切换,也会导致经常被打断。越快越准地保存好当前状态,用户就能更快地重启程序,从中断处继续。
确保你的界面能支持双倍高度的状态栏。双倍高度状态栏用于展示进行中的通话,录音等。如果程序没有准备好,就可能导致布局混乱。例如,界面可能会压缩或被盖住。
在多任务环境中,更要留心这一点,因为有了更多的程序可以激活双倍高度的状态栏。你可以在测试时尝试把双倍高度的状态栏调出来,看看是否有问题。
确保那些需要用户注意或参与的信息不被遗漏。例如,如果你的程序是游戏或者媒体浏览器,确保用户在切换到其他程序时不会遗漏重要的内容或事件。当用户切换回来的时候,要让用户觉得好像就没离开过那样。
确保程序的声音展示得当。多任务使得你的程序与其他程序同时运行。也使得你的声音应该在程序进入后台时停止,在程序恢复后继续。为了保证声音可以符合用户的期望,与其他声音和谐相处,请详见声音
恰当地使用本地提醒。程序可以在任意特定时间发送局部提醒,无论是挂起,在后台运行还是根本就没运行。为了用户体验好一点,请不要塞给用户太多的提醒,并遵照地和推送提醒指南。
合适的话,在后台把用户触发的任务默默完成掉。在触发某任务后,用户通常希望在即使切换到其他程序后,这个任务也会自动进行。如果你的程序正执行用户触发的任务到一半,不再需要用户的指点,那就应该在后台把它做完。
打印
iOS4.2 及以后的支持多任务的版本中,用户可以无线打印内容。你可以用内置程序打印图片和PDF 文档,或者可以使用专业的打印程序来定制格式。iOS 会在选定的打印机上管理打印顺序。
通常,用户在打印的时候会按标准的打印按钮。接下来,用户可以选择打印机,设置打印属性,按下打印键后开始打印。在iPhone 上,这个视图以操作列表的方式从屏幕下方出现;在iPad 上,操作区会出现在指向打印按钮的浮出层里。
用户可以在打印中心里检查打印任务,这是一个只有用户安排打印任务时才运行的后台系统程序。在打印中心里,用户可以查看当前的打印序列,获得打印任务的详情,或者取消任务。
只要在代码里加上几句话,就可以让你的程序支持基本的呃打印功能。为了保证用户体验的质量,请遵照以下指南:
使用提供的打印按钮。用户对这个按钮的意义和行为非常熟悉,所以应该尽可能地使用它。如果你的程序没有工具栏或者导航栏,那就另说了。这样的话,你需要定制可以放在主内容区的打印按钮。
如果打印是当前的主要任务,那就应该展示打印按钮。如果打印不适合当前情景,或者用户不想打印,不要在视图里展示打印相关的功能。
合适的话,为用户提供额外的打印选项。例如,你可以允许用户设置打印范围或拷贝数。

如果用户不能打印,就不要展示打印相关的界面。在展示打印功能前,要确保用户的设备支持打印。
iAd 富媒体广告
iOS 以后的版本里,你可以在程序里内嵌广告,用户看到它或点击它后就可以为你创造收入。你要想好,什么时候、怎样来展示广告才能让用户有动力去看,又不影响用户的任务。
你可以在程序里添加广告区,展示由iAd Network 提供的内容。当用户按在这些区域banner)上时,广告就有反馈,比如播放电影,展示更多内容或者登陆Safari 打开网页。这些内容可能会盖住整个界面,或者把程序挤到后台去。
Banner 的尺寸会随设备和摆放方向变化而变化。
为了保证banner 广告能与程序贴合更紧密,提供更好的用户体验,请遵照以下指南:
把它放在屏幕底部。这种放置方法会随栏的具体情况略作调整。
如果屏幕底部没有栏,就在屏幕底部放上banner

如果一个栏都没有,就在屏幕底部放上banner
如果有工具栏或者tab 栏,可以把banner 放在它上面。

确保广告在你的程序里不是那么唐突:你可以选择在哪一屏上展示广告。例如,你可以把它作为主任务各环节的连接处。当用户觉得他们的任务没被打断时,才更有可能留意iAd。这对于游戏等娱乐性程序更为重要。你不会想用banner 干扰用户玩游戏吧?
尽可能的在两种方向上都放上banner 广告。最好让用户在浏览你的广告时不需要切换方向。而且,支持两种方向可以给你留下更广阔的展示空间。
不要让广告在翻页时跟着动。如果你程序中的内容支持需要翻页,要确保banner 的位置保持固定。
当用户查看或触摸广告时,暂停那些需要用户注意或操作的任务。用户不希望因为看你的广告而漏掉重要的事情,也不希望程序干扰广告的体验。较好的方法,找到那些程序转入后台时会暂停的进程,在用户浏览广告时也暂停同样的进场。
除特殊情况外,不要停止播放广告。一般而言,当用户查看或触摸广告时,你的程序持续运行并接收事件。所以有可能出现一些需要用户注意的突发事件。但是,很少有需要关闭广告的情况。为数不多的一种情况就是VoIP 电话服务。当有电话进来时,就应该停止播放广告了。
快速文件预览
iOS4 以后,即使你的程序不能打开某类文件,用户也可以预览它。例如,用户可能想预览下从web 或其他源头获得的文档。
在用户预览文件前,他们可以从定制的文件图标里获得一些信息。例如,用户从email附件获得文件后,iPad Mail 会展示文档的图标、标题和文件大小。用户可以按下图标来预览文档。
你可以在程序里用别的方式展示文件,全屏展示,或者模态化展示。展示方式应依设备而定。
iPad 上,用模态化的方式预览文档。iPad 的硕大屏幕很适合以一种用户可以快速离开的暂态展示预览文档。缩放转场非常适合用于展示预览。
iPhone 上,应该采用更加专注的方法,带导航栏的视图更为适合。这可以帮助用户在预览文档时弄清自己从哪里来的,又到了哪里去。虽然在iPhone 上用模态预览文档也是可以的,但并不推荐这样。iPhone 也不支持缩放转场。
用带导航栏的视图模式预览文档时,会出现预览专用的导航控件(如果已经有了工具栏,这些控件会出现在工具栏上)。
声音
iOS 设备可以实现很棒的声音效果。在你的程序中,声音可能是核心的组成部分,或者偶尔出现增强效果。无论声音扮演的角色如何,你应当知道用户对声音抱着怎样的期望,应该如何来满足它。
理解用户的期望
用户在设备上调节声音,也可能带着有线或无线的耳机。用户也对应该如何控制声音有所期望。虽然你可能觉得有些期望很奇怪,但它们都遵循由用户来控制何时应听到声音的原则,而非由设备。
用户会如下情况切换成静音:
l 避免被不符合期望的声音打扰,比如电话或短信的提醒音
l 避免听到由操作带来的副产品,比如键盘音或其他反馈音、故障音或启动音乐
l 避免听到与玩游戏不太相干的声音,比如偶发的故障音。

例如,在剧院里用户希望把设备调成静音,以免打扰其他观众。这种情况下,用户依然想使用程序,但并不想被出乎意料的声音吓到,比如铃声或新消息提醒音。
对某些刻意设定的声音,当用户的操作触发它时,Ring/Silent 的设置不能关闭它。例如:
媒体播放器里的播放不会静音,因为播放是由用户主动请求的。
闹钟不会静音,因为它是由用户明确设定为有声的。
在语言学习软件中的声音片段不应静音,因为用户有明确的欲望想听到它。
语音聊天程序中的对话不应静音,因为用户打开它就是为了听声的。
用户使用设备音量键所做的调节会影响所有设备播放的声音。这包括歌曲、程序声音和设备声音。用户总是可以使用音量键静音,无论Ring/Silent 设置在哪一档上。使用音量按钮调节程序当前的声音时,整个系统的音量都会受影响,铃声除外。
对于iPhone 来讲,当没有任何程序在播放声音时,调节音量按钮就会调整铃声音量。
用户使用耳机来私下地听声音,同时解放双手。无论这些设备是有线、无线,用户对体验都有一些期望。
当用户插入耳机或联通无线声音设备时,他们是想私下里听这些声音。由于这个原因,他们希望当前正在播放的声音不要暂停。
当用户拔出耳机或与无线设备断开时,他们不想把刚才听到的声音自动共享给其他人。
所以,他们希望当前正播放的声音可以暂停,等到用户准备好了再重新播放。
定义声音的行为
有必要的话,你可以为自己的程序设定相对的、独立的音量水平,以便产生合适的声音输出。但是最终的声音输出还是要受系统音量的管制,由音量键或者音量滚动条来调节。这意味着程序音量的控制权还是在用户手中。
合适的话,要给程序加上选择声道(audio route)的控件。即使当用户没有插上或拔下无线声音设备,他也希望能选择不同的声道。为了解决这个问题,iOS 自动提供了让用户选择输出通道的控件。由于切换声道是用户触发的行为,用户期望正在播放的声音不要停。
如果程序只是在主界面上放些伴奏声,就使用system sound servicesSSS 是一种产生警告声、界面声(UI Sounds)和振动的后台服务。当使用SSS 播放声音时,你不能设置该声音如何与设备上的其他混响,也不能设置如何处理中断或其他设备设置的改变。
如果声音是程序的核心功能之一,使用Audio Session Service 或者AVAudioSession类。这些类不能直接产生声音,但可以帮你设置该声音如何与设备上的其他混响,如何处理中断或其他设备设置的改变。
iPhone 上,无论你用了什么样的技术去控制声音,iPhone 总能打断当前运行中的程序。因为任何程序都不应妨碍到用户接听来电。
Audio Session Service 中,audio session 充当程序与系统的调节者。它最重要的一面是category,可以用来定义程序的声音行为。
为了运用Audio Session Service 的优势,提供用户期待的声音体验,你应当选择与你的声音行为最相符的那一类。这要看你的程序是只在前台时播放声音,还是在后台也能播放。可以参照如下指南:
根据category 的语义来选择,而非对行为的细节描述。这样能保证你的程序能符合用户期望。另外,如果将来类目对应的行为方式被修订了,也能保证你选择类目是合适的。
少数情况下可以在标准行为的基础上稍作定制。类别对应的标准行为与大多数用户的期望一致,所以在自定义前要考虑清楚。例如,你可能想添加“Should Duck”属性,以便你的程序音比其他声音都大(除了铃声),以便符合用户的需求。
考虑根据设备当前的声音环境来选择类别。这也许是合理的,因为用户也许想使用你的程序的同时听着其他声音。这样的话,当用户启动你的程序时,不要暂停用户正在听的声音或强迫用户选择音轨。
一般而言,避免在程序运行过程中改变类别。改变类别的主要原因是你的程序可能需要在不同的时候支持录音和回放。这种情况下,可以在录音类和回放类之间切换,而非只用播放和录音类。这是因为选择录音类可以避免在录制过程中有警告声(比如新短信)出现。
表格7-2 中列述了你可以使用的类别。

这里是一些用例,介绍如何选择与用于期望一致的声音类别。
用例1:帮助用户学习语言的教学程序。你可以提供:
当用户触摸某个控件时提供反馈音
当用户想听正确的发音时记录单词和词汇
在这个程序里,声音是核心功能。用户使用这个程序来听所学语言的单词和短语发音。
所以即使设备的声音锁掉了也应该发音。应为用户需要清楚地听到发音,所以希望其他声音都静下来。
为了提供符合用户期待的声音,你应该使用playback 类。虽然这个类可以在稍加修改后支持与其他声音混响,这个程序应当使用默认的行为,以便保证其他程序的声音不会带来干扰。
用例2Voice over internet protocolVoIP)电话程序,你应当提供:
获得声音输入
播放声音
在这个程序中,声音是核心功能。用户使用该程序与他人联络时,往往有其他程序正在运行。用户希望能在把设备设为静音或设备被锁定时依然能接听电话,并希望在通话过程中其他程序保持安静。用户也希望当程序跑在后台时依然能收到电话。
为了提供符合用户期待的声音,你应该使用Play and Record 类。另外,只能在需要的时候激活audio session,以便于在不通话的时候可以使用其他声音模式。
用例3:允许用户扮演角色执行多种任务的游戏。你应带提供:

各种游戏音效
音乐音轨
在这个程序中,声音可以提升用户体验,但是并不是主任务的核心。而且,用户也可能想静音玩游戏,或者听着其他音乐玩。
最好的策略是看一下程序启动时用户有没有在听其他声音。不要在开始时让用户选择想听哪个音轨。可以调用ASS 的函数AudioSessionGetProperty,读取kAudioSessionProperty_OtherAudioIsPlaying 的值。基于这个值,你可以选择Ambient或者Solo Ambient 类(两种类都支持用户静音玩游戏)。
如果程序启动时用户正在听其他声音,应该假设他想继续听,不应该强行用当前程序的音轨代替它。这种情况下,应该选择Ambient 类。
如果程序启动时用户没在听其他声音,选择Solo Ambient 类。
用例4:将用户精确实时地导航到目的地的程序。你应该提供为行程中每一步说出方向少许声音反馈可以继续收听其他声音在这个程序中,无论它在前台还是后台运行,声音导航提示都是主要任务。基于此,你应该使用Playback 类,允许你在设备被锁或切换到静音、程序跑在后台时也能播放声音。
要想让用户运行程序的同时可以听其他声音,你可以添加kAudioSessionProperty_O verrideCategoryMixWithOthers 属性。但是,你同时也希望用户能在其他声音播放时听到声音指示。这可以通过增加kAudioSessionProperty_OtherMixableAudioShouldDuck 属性来实现。这样你的声音就
会比所有其他音轨的声音大(除了iPhone 上的电话声)。
用例5:允许用户上传图片和文字到网页的博客程序。你应该提供简短的启动音乐与用户操作相匹配的音效(比如上传成功后的提示)上传失败时的警告音。
在这个程序中,声音可以提升用户体验,但不是核心功能。主任务与声音无关,用户不依赖声音也能成功满足需求。在这个勇利用,你应该使用SSS 来播放声音。这是因为所有该程序对声音的要求都与SSS 的特性相符(播放界面音效和警告音,无视设备是否被锁,无视Ring/Silent 的设置)。

管理声音冲突
有时,来自多个程序播放的声音会冲突。例如,打电话的过程中电话声会和正在播放的其他声音冲突。在多任务环境中,这种冲突的频率会更高。
为了提供符合用户期望的音效,iOS 需要你:
确定你的程序会导致怎样的冲突。
在冲突解除后选择合适的应对方式。
每一个程序都需要确认可能会导致的冲突,但并不是每一个程序都需要制定应对冲突的方案。这是因为对于大多数程序来说,在冲突解除后继续播放就是一个合适的方案。只有以录音回放为主,提供回放控件的程序需要额外地定义好应对方案。
从概念上来说,根据导致冲突的声音类型以及用户对冲突后的期待来分,共有两种声音冲突。
可恢复的冲突。当用户在使用以听觉为核心的程序时被其他声音暂时干扰时,会出现可恢复的冲突。
可恢复中断结束后,有回放控件的程序应该恢复到中断发生前的状态,无论之前是正在播放还是暂停状态。没有回放控件的程序应该恢复到播放状态。(After aresumable interruption ends, an app that displays media playback controls should resume what it was doing when the interruption occurred, whether this is playing audio or remaining paused. An app that doesn’t have media playback controls should resume playing audio.例如,当用户正用iPhone 听音乐时,突然来了个VoIP 电话。用户接了电话,希望在通话过程中音乐保持静音。电话打完后,用户希望回(playback)型程序能自动恢复播放音乐。这是因为用户在接电话前并没有主动暂停音乐,所以希望打完电话后能继续享受歌声。否则,播放器在电话打完后就应该还是暂停状态。
不可恢复的冲突。不可恢复的冲突是由以播放声音为核心功能的程序引起的,比如
媒体播放器。
在不可恢复冲突结束后,显示了回放控件的程序不要恢复播放,没有回放控件的程序应该恢复到播放状态。
例如,当用户在听1 号播放器的音乐时被2 号播放器的声音打断。用户决定听一会2 号播放。再退出2 号播放器后,用户不会希望1 号播放器再自动播放,因为他已主动将2 号播放器视作了主程序。
以下指南帮助你判断应提供什么样的信息,以及如何在中断结束后继续:
确定程序导致中断的类型。你可以在你的声音播放完毕后通过以下两种方式屏蔽你的声音:
如果你的程序导致的是可恢复的中断,给你的声音打上AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation 的标。

如果你的程序导致的是不可恢复的中断,就不用打标了。
这样做可以帮助iOS 恢复被打断的声音播放。
判断中断结束后你是否应该恢复播放。你可以根据程序所播放声音的体验类型来判断。
如果你的程序提供了让用户播放或暂停声音的媒体回放控件,就应该在中断结束后检查AVAudioSessionInterruptionFlags_ShouldResume 标签。
如果存在“Should Resume”标签,你应该:
如果你的程序在被打断时正播放声音,那就恢复播放
如果你的程序在被打断时没有播放声音,那就不要恢复播放
如果你的程序没有提供让用户播放或暂停声音的媒体回放控件,就应该在中断结束后恢复刚才播放的声音,不必再去检查”Should Resume”标签是否存在。
例如,播放音轨的游戏应该在中断结束后立即恢复播放。
处理远程媒体控制事件
iOS4.0 起,程序可以在用户使用iOS 媒体控制器或其他附件时接受远程控制事件。
这使得无论你的程序是在前台还是后台,都能从界面以外的地方获得指令。
媒体回放程序尤其需要使当地响应这些事件,尤其是当在后台播放音乐时。
为了承担起保护隐私的责任,请遵守以下指南:
只在合理的时候接受远程控制信号。例如,如果你的程序支持阅读内容,搜索信息和听音频,那么只在用户听音频时才接受远程信号。当用户没在听音频时,就要把接收事件的权限释放出来。这使得用户可以在使用你的程序阅读内容时方便地收听、控制其他程序的音频。
即使某个事件对你的程序没有意义,也不要重新定义事件的含义。用户希望iOS 媒体控制器和附件的事件在所有程序里具有一致的含义。不要处理与你的程序不需要的事件。
所有你处理的事件就要符合用户的期望。一旦重新定义事件的含义,用户就晕了,必须要退出你的程序才能脱离困境。
VioceOver 和附件
VoiceOver 是为帮助盲人、有视力障碍的用户以及有学习障碍的用户而设计的。

为了确保VoiceOver 用户能使用你的程序,你需要为视图和控件提供一些描述信息。支VoiceOver 并不需要你对界面设计方案做任何调整。
只要你依照标准指南使用标准控件,就不需要什么额外工作。对界面的个性化定制越厉害,就需要更多的说明信息,以便VoiceOver 能精确地描述你的程序。
编辑菜单
你可以在文本视图、web 视图和图片视图里调出编辑菜单,来执行剪切、粘贴和选择的操作。
你可以调整菜单的行为,给用户更多控制内容的操作。例如,你可以:
设定哪些标准命令适合当前的环境。
在菜单出现前定义好它的位置,以免遮盖重要的内容。
当用户双击唤出菜单时,定义好默认被选中的对象。
你不能:
更改编辑菜单的颜色和形状。
为了保证在你的程序中编辑菜单符合用户期望,你应该:
展示与当前环境相适应的命令。例如,当什么都没选中时,菜单中不应该有复制
剪切。同样,如果选中了一些东西,菜单里不应该包含选择。如果你要定制编辑菜单的外观,要确保展示的内容与当前环境相匹配。
让菜单和界面布局相适应。iOS 在插入点或选择区的上面或下面,具体由空闲空间来定。
菜单指向内容,以便用户知道操作的对象。你可以在菜单出现前用代码确定好它的位置,
这样可以避免重要的内容被它遮盖。
两种唤出菜单的手势都要支持。虽然触碰并按住是唤出菜单的主要方式,但也可以在阅读文本时用双击文字同时选中文字并唤出菜单。如果你要自定义编辑菜单,一定要支持两种手势。另外,你可以定义用户双击时默认选中哪些对象。
避免在界面上放置编辑菜单里已经有的命令。例如,最好在编辑菜单里完成复制,而非在界面上放置复制按钮。否则用户还需要想一想到底该用哪种。
如果对用户有用的话,可以让静态文本也能被选中。例如,用户会想要复制图片的标题,但不太会想复制tab 栏的标题或者本屏的标题。
不要让按钮标题变得可以选中。用户选中按钮的标题时会很容易触发按钮。一般而言,与按钮行为相似的元素都不应该被选中。
如果支持复制粘贴,也要支持重做撤销。用户一改变主意就会很想撤销最近的操作。由于编辑菜单里的命令在执行前无需再次确认,所以应该给用户撤销的机会。
iOS4 以后,你可以在编辑菜单里提供定制的功能。
如果你想把被选中的文字或对象用于与当前环境无关的地方,最好使用操作列表。例如,
当用户把选中的内容在网上分享,你最好用操作列表展示一堆SNS 供用户选择。
如果你想定制编辑菜单,请阅读以下指南:
自定义的菜单项要能够编辑、改变、或者直接操作对用户选中的对象。用户希望编辑菜单上的命令能够在当前环境里直接操作被选中的对象,你定制的命令也应满足这种期望。
把定制的项目列在系统的项目后面。不要把定制命令和系统提供的命令混起来。
保证定制的项目数量合理。不要给用户过多的选择。

定制的菜单命令要简明,精确地概括这条命令的作用。一般而言,项目名称应该是能描述操作的动词。虽然一个大写的词能搞定最好,但非得用词组的时候,要用标题大写样式(四个词以内,大写除冠词、介词、并列连词外的词)。
撤销和重做
晃一晃设备,就能唤出一个对话框,允许用户:
撤销刚才输入的词
重做刚才撤销的词
取消撤销
你可以通过定义如下内容,以在更宽的范围内支持撤销用户
可以撤销和重做的操作
什么时候你的程序会把摇晃视作撤销的命令
支持多少步撤销
用简短的话告知用户,他们在撤销什么、重做什么。iOS 在按钮上自动提供撤销”“(应为会自动补上空格),但你需要提供一两个词,描述一下撤销、重做的是什么。
例如,你补上删除姓名更改地址,或者直接把标题写成撤销删除姓名重做更改地址取消按钮的标题时不能更改或隐藏的)避免词太长。词太长不好读,太卡。可以用标题大写样式,不要加标点。
不要覆盖摇晃设备的事件。虽然你可以在代码中设置何时将摇晃视作唤出撤销菜单的命令,但如果用户还可以用摇晃作为其他命令的话,这就会让用户迷惑。分析一下程序的交互方式,避免让用户不能预测摇晃后的效果。
除非撤销和重做是很常用的操作,否则不要把系统提供的重做和撤销按钮放出来。记住,摇晃是唤出撤销对话框的首要途径。提供两三种方式反而会让用户迷惑。如果你确信把这些功能放出来很有必要,可以在导航栏里放上系统提供的撤销和重做按钮。更多信息详见工具栏和导航栏使用的标准按钮
把撤销和重做与当前的工作紧密联系起来,不要和之前的工作联系起来。一般而言,用户希望所做的操作可以立刻生效。
键盘和输入视图
iOS3.2 及以后的版本可以用定制的键盘取代系统键盘。例如,iPad Numbers 提供了让输入日期、时间更方便的键盘。

如果你要定制输入界面,一定要让它容易理解,而且要看起来可点击。
你也可以定制一些小插件,放置在键盘上方(或自定义位置)。例如,在某些时候,Numbers会提供让用户帮助快速计算的小插件。
iOS4.2 以后的版本里,你可以使用系统提供的标准音来为定制的键盘提供声音反馈。
位置服务
位置服务允许程序确定用户的大致位置,前进方向和设备方向。用户会很喜欢给事物打上位置的标签,或者找到附近的朋友。但是用户也希望在不想分享位置的时候关闭这些服务。
当用户关闭位置服务后,如果新打开的程序还想请求位置数据,就会跳出警告框,提示要想继续使用位置信息必须修改设置。警告框不允许用户在当前程序里修改设置。用户必须到“Settings”里修改偏好。这可以让用户明确知道他在给程序授权位置信息。
为了提供最佳的用户体验,请参照一下指南:
确保用户明白为什么要打开位置服务。当被索要个人信息时,如果用户不明白为什么需要这些信息,就会很疑惑。为了不让用户觉得不舒服,确保只在用户尝试使用明确需要位置信息的功能时弹出警告框。例如,用户可以在没有位置信息时使用Maps,但是当试图使用定位相关的功能时就会看到警告框。
在弹出警告框前先检查用户的偏好设置。你可以使用核心位置接口来获取这个参数值。
获得这个信息可以让你只在必要的时候弹出对话框,或者完全避免弹出它。
只有当没有位置信息就无法实现核心功能的情况下才弹出警告框。这时用户不会觉得烦了。因为他们明白该程序的核心功能必须依赖位置信息。
避免在用户选择需要位置信息的功能前就弹出警告框。这样的话,用户就会疑惑为什么在使用与位置不相干的功能时需要位置信息。
本地和推送提醒
本地和推送提醒允许你在程序没有在前台运行时想用户发送消息。
例如,你可能会想让用户知道:
有新消息到达
将会发生什么事
数据下载好了
某些东西的状态变了
本地提醒:程序可以添加排期,由iOS 系统发布,程序没必要一直在前台运行。例如,
日历或者to-do 程序可以给本地的提醒时间表排期,提醒用户快到的会议或约会。
推送提醒:由程序的远程服务器发送到苹果推送提醒服务上,一次性发给所有安装了此程序的设备。例如,用于与他人对战的程序可以一次性更新所有人的动向。
如果本地或推送提醒到达是,你的程序没有运行在前台,你可以通过以下方式获取用户注意:
在程序的Home screen 图标上打上可爱的小绷带标记唤出警告框
如果你的程序正运行在前台,也同样可以收到本地和推送提醒。但是可以用自定义的方式表达给用户。在“settings”里,用户可以将某些或所有程序的推送消息禁用,小绷带、声音或者警告框就不会出现了。但对本地提醒就不能在settings 里设置了,这要到具体的程序里去设置。
当信息的数量有意义且对时间不敏感的时候可以使用小绷带。绷带是告知用户有多少新项目值得注意的好方法,比如未读消息、待办事项、更新的文档。因为用户只有浏览桌面才会看到这些消息,所以不要拿它来提醒时间紧迫的事。
绷带的外观和位置不能自定义:它是红色的,会出现在图标右上角。
绷带上只有数量,没有文字或标点。
当发布需要用户立刻注意或操作的消息时,可以用警告框。警告框是告知用户新事件或状态改变的好方法。警告框会中断用户的操作流,所以要谨慎使用。
要想让提醒符合用户期望,请遵照以下指南:
保持绷带上的数字实时更新。用户一浏览新信息就要立刻更新绷带上的数字,这样他们就不会觉得刚读完又有新信息来了。
定制警告框上的信息。定制信息将出现在警告框的中央,位于程序名称的下方(程序名称会自动成为警告框的标题)。一个合格的本地或推送消息应该:
聚焦于信息,而非用户的操作。避免告知用户应该按哪个键,或描述按某个键的后果。
要简短,一两行内放完。如果消息太长,警告框就会被迫翻页。
使用句子大写样式,附上适当的标点。可能的话,使用完整的句子。
按钮最好使用定制的标题。警告框上可能会有一或两个按钮。有两个按钮时,关闭按钮会放在左边,操作按钮(action button)会放在右边。如果只有一个按钮,默认显示为OK

按操作按钮会关闭警告框并自动登录你的程序。按关闭或者ok 也会关闭警告框,但不会登录程序。
如果你想为操作按钮使用定制的标题,要让标题明确地描述登录程序后会发生的操作。
例如,游戏可能会用“play”作为标题,暗示按下它将会打开程序给用户来玩。要确保
标题可以:
使用标题大写样式
简短,避免在按钮里折行
当设备处于锁定状态时,会显示滑动以查看。你定制的按钮标题也可以显示在这里,
届时标题会自动小写,取代查看
可以考虑提供登录图片。除了展示已有的登录图片外,你可以在用户通过提醒打开你的程序时提供另一张登录图片。例如,游戏可以显示一张与游戏过程中截图相似的登录图片,而非菜单那一屏。如果不专门为此提供登录图片,iOS 会展示之前的截屏或者其他登录图片。
合适的话,呈现绷带或者警告框时要有伴声。当用户没有看着设备时,声音可以吸引他们的注意。应当只对很重要的信息才配备提醒音。例如,日历可能会在马上要有会议时发出提醒音。或者多人协作任务管理程序会在他人完成了分配的任务时给予提醒。
你可以定制声音,或者使用内置的警告声。如果你要定制声音,确保它简短而专业。不能在有新消息时强迫设备振动,因为这应该听从用户的设置。
绿肥红瘦www.gotvg.com 街机对战平台 拳皇97  ARC   FC MD SFC GBA PSP PS
既然来到人世间,注定会留下什么。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

     
    Archiver|手机版|小黑屋|( 沪ICP备12034951号 )

GMT+8, 2024-5-6 00:44 , Processed in 0.350270 second(s), 31 queries .

© 2001-2011 Powered by Discuz! X3.1

快速回复 返回顶部 返回列表