IOS 人机界面指南
界面设计基础(目录)
为iOS7而设计
iOS7 的革新关键词如下:
- 遵从:新UI更好的帮助用户理解内容并与之互动,但却不会分散用户对内容本身的注意力
- 清晰:各种大小的文字易读,图标醒目,去除了多余的修饰,重点突出,很好地突显了设计理念
- 深度:视觉层次和生动的交互动作赋予UI新的活力,不但帮助用户更好的理解新UI的操作并让用户在使用过程中感到惊喜
无论你是重新设计一个现有的app或是重新开发一个,尝试一下苹果重新设计系统内置app的方式:
-
首先,去除了UI元素让app的核心功能呈现的更加直接并强调其相 关性。
-
其次,直接使用iOS7的系统主题让其成为app的UI,这样能给用户统一的视觉感受。
-
纵观全局,以内容和功能为核心来指导设计,从前的设计模式可以先放到一边。
以内容为核心
虽然明快美观的UI和流畅的动态效果是iOS7体验的亮点,但内容始终是iOS7的核心。
这里有一些方法,以确保您的设计能够提升您的app功能体验并关注内容本身。
**充分利用整个屏幕。**无需使用边框、底图等等多余的UI元素,让内容扩展到屏幕边缘。
天气app是最好的例子:漂亮的天气图片充满全屏,告知用户天气情况,同时也很好的呈现了如每个时段气温等等的其他重要信息。
**尽量减少视觉修饰和拟物化设计的使用。**UI面板、渐变和阴影有时会让UI元素显得很厚重,致使抢了内容的风头。应该以内容为核心,让UI成为内容的支撑。
**尝试使用半透明底板。**半透明的底板可以让用户看到后面的内容,在某些场景下起到了上下文提示的作用,另一个角度上来说,也让用户(比以前)看到了更多内容。
保证清晰度
保证清晰度是另一个方法,以确保你的app中内容始终是核心。
以下是几种方法,让最重要的内容和功能清晰,易于交互。
**大量留白。**空白让重要内容和功能显得更加醒目。此外,空白可以传达一种平静和安宁的视觉感受,它可以 使一个app看起来更加聚焦和高效。
让颜色简化UI**。**一个主题色——比如在记事本中使用的黄色——让重要区域更加醒目并巧妙地表示交互性。这同时也给了一个app一个统一的视觉主题。
**通过使用系统字体确保易读性。**iOS7的系统字体自动调整行间距和行的高度,使阅读时文本清晰易读,无论用户选择何种大小的字号都表现良好。
**使用无边框的按钮。**按钮名称、箭头以及系统颜色向用户展示了交互元素,这些内容替代了原先的带有形状的按钮。联系人界面使用了系统色蓝色箭头文字展示了按钮的导航性。
用深度来体现层次
iOS7经常在不同的层级上展现内容,用以表达分组和位置,并帮助用户了解在屏幕上的对象之间的关系。
通过使用一个在主屏幕上方的半透明背景浮层来区分文件夹和其余部分的内容。
用户在使用备忘录里的某个条目时,其他的条目呈现在屏幕底部的其他分层上,这样用户可以通过滑动展开所有分类条目(译者按:算是一种提示手段)。
日历有较深的层级,,当他们在翻阅年、月、日的时候,以及增强的交互动画给用户一种层级纵深感(循序切换的层次,从年到月到日)。在滚动年份视图时,用户可以即时看到今天的日期以及其他日历任务。
当用户处于月份视图时,点击年份视图按钮,月份会缩小至年份视图中的所处位置。
类似的过度出现在月份和日期视图的切换时,当用户选择某个日期时,月份视图向外扩展,显示出日期视图。
iOS应用解析
几乎所有的iOS app都应用了UIKit framework中定义的组件。了解这些组件的名字,作用和构成能够帮助你设计app过程中做出更好的决定。
UI组件大致分成以下4种大类:
-
Bars:包含了导航信息,告诉用户他们所在的位置并包含了一些能帮助用户浏览或启动某些操作的控制按钮。
-
内容视图:包含了app的主体内容以及某些操作行为,比如滚动、插入、删除、排序等等。
-
控制按钮:展示信息或者控制动作。
-
临时视图(对话窗口):短时间出现,给用户重要信息或者额外的选择或者其他功能。
除了定义UI组件,UIKit也定义对象实现的功能,例如手势识别,绘图,辅助功能,打印支持。
从编程的角度说,UI组件被认为是不同类别的视图,因为他们从UIView得到继承。视图能绘制屏幕内容并且知道用户何时触摸了屏幕。要在app中管理一组或者一系列的视图,通常需要使用一个视图控制器,它能协调视图的显示内容,实现与用户交互的功能并能在不同屏幕内容之间切换。
下面是一个例子,关于视图与视图控制器如何结合并呈现iOS app的UI。
虽然开发者认为真正起到作用的是视图和视图控制器,但一般用户感知到的iOSapp是不同屏幕内容的集合。从这个角度来看,在app里,屏幕内容一般对应于一个独特的视觉状态或者模式。
起始与停止
即时启动
有种说法是用户往往不会花超过一两分钟去审视一个新应用,当你将软件从打开到启动这段时间压缩得很短,并且同时在载入过程中呈现一些对用户有帮助的内容,你会激发用户的兴趣并给所有用户一个惊喜。
**重要:**不要在安装过程结束后告诉用户需要重启设备之类的。重启需要时间并且会让人觉得你的应用看上去不可靠而且很难使用。如果你的应用将使用存储空间,或者不重启机器就无法流畅运行,你必须声明这些问题。
**尽可能避免使用闪屏或者其他启动体验。**用户能够在启动后立即开始使用软件是最好不过的。
**避免让用户做过多设置。**而应该如此:
-
**聚焦在满足80%****的用户需求上。**这样主体用户群就无需设置各种选项,因为你的app已经默认处于他们想要的状态。如果有些功能有少部分用户想要,换句话说,大部分人不需要的话,就别管它了。
-
**尽可能用其他方式获取更多(用户)信息。**如果你能得到用户在内置软件或硬件设置中提供的信息,直接从系统中获取它们,而不需要再次让用户输入。
-
**如果你必须获取设置信息,在你的应用中直接向用户询问,然后尽快保存这些设定(这段讲的是权限许可,如能否访问照片或者日历或地理位置信息等等)。**这样用户就无需强制跳出app进入系统设置页面了。如果用户需要更改设置,他们可以在任何时候进入app的设置选项进行修改。
**尽可能让用户晚一些再登录。**让用户在无需登录的情况下就能尽量多的浏览内容并使用部分功能是最理想的状态,。如果用户在熟悉你的app之前就被强迫需要登录,那么启动流程就会变得拖沓繁琐。
一般来说,按照屏幕默认的定向方式启动你的app**。**对于iPhone,竖向是设备默认定向,而iPad则是设备当前所处的方向。如果你的app只能在横向模式运行,那么就始终以横向状态启动,让用户在他们自己需要 时改变设备方向。
最好让横屏app支持两种模式的横屏,即home键处于左右两侧的状态。如果设备当前已经处于横向状态,那么就按照当前状态启动app,除非你有充分的理由不这么做。其他情况时,可以考虑按home键处于右侧的方式启动app(译者按:大部分人习惯使用右手)。
可以准备一张与app****首页看上去一样的闪屏,iOS会在启动app时调用这张图,这样可以让用户觉得启动速度很快,降低对等待时间的感知度。
如果可能,不要让用户在初次启动应用时阅读免责声明或者确认用户协议。你可以直接在app store展示这些内容,使用户在下载前就有所了解;虽然这个办法能最大地减少麻烦,但也不是一直可行。如果在某些情况下你必须展示这些内容,要确保它们与UI保持统一并在产品功能与用户体验之间达成平衡。
**在应用重启后,需要恢复到用户退出使用时的状态,让他们可以从中断之处继续使用。**无需让用户记住是如何达到此种退出状态的。
时刻准备好停止
**iOS app无需关闭或退出选项。**当用户切换app或回到主屏幕或者将他们的设备调至睡眠模式的时候,其实就是停止了当前app的使用。
当用户切换app时,iOS的多任务系统将其放置到后台并将新app的UI替换上来。在这种情况下,你必须做到以下几点:
-
随时并尽快保存用户信息,因为在后台的应用随时有可能被终止或退出。
-
**当程序停止的时候保存当前状态,**使用户可以在回到应用时能从中断之处继续使用。例如,在使 用可滚动的数据列表时,退出后保存列表所在的位置。
不要强制让app****退出,因为这样会让用户误以为是crash。如果有问题产生,需要告诉用户具体状况以及如何解决。以下有两个建议,取决于出现的问题有多严重而酌情使用:
-
*使用吸引注意的屏幕内容描述出现的问题并给出建议的方案。*如此可让用户了解到app本身没有问题,并将主动权交给用户,让他们决定是解决问题并继续使用还是切换到其他应用。
-
如果只是某些app****功能无法使用,可以在用户使用这些功能时弹出一个对话窗口。****只有在用户使用的功能确实无法工作时再继续弹出警告提示。
布局
布局远比UI组件的样式重要。布局能让你向用户展示什么是最重要的,他们是如何选择的,内容是如何相关的。取决于app运行的设备——以及设备的方向——布局可能会有所不同。
**让用户尽可能容易地狱内容交互并控制好每个控件的间距。**需要点击的控件大小至少要有44×44像素。
**通过平衡重要内容或者功能,让用户专注于主要任务之上。**将重要的组件放置于屏幕上半部分是最常用的方法之一——同时也要遵循从左到右的原则——放置在靠左侧的屏幕上。
**利用视觉重心和平衡向用户展示屏幕元素之间的相对重要性。**大型部件——以及那些看起来比较重的——更加吸引眼球并且让人感觉比小的部件重要些。
**一般来说,避免你的UI不一致。**尽可能地让有相似功能的组件有相似的外观。人们经常认为不一致一定有某些原因,并尝试花时间去搞清楚(这样其实是浪费用户的时间)。
**确保默认大小的内容(文字、图片)用户能够看清楚。**比方说,不要让用户滚动屏幕来阅读(屏幕以外的部分)文本或者无需通过放大操作来看清图像。
导航
用户很少察觉到一个程序中的导航体验除非它不符合他们的期望。放置导航到一个能够支撑你的app整体结构和目的却又不过分引起用户注意的状态。
广义来说,有三种主要类型的导航,每种导航都有其适应的app结构:分层、扁平、内容或经验驱动。在某些情况下,几种导航形式可以出现在同一个app里并且各司其职。无论你的app适合使用哪一种导航结构,最重要的是用户所体验的内容必须被有逻辑的、可预测并易于遵循的呈现在你的app中。用户需要始终很清楚他们在哪儿,并且如何到他们想去的地方。
模态对话
模态视图是一个优缺点并存的模式,承载某些连贯操作或内容,可以给用户在不脱离主任务的情况下完成某些任务或获取某些信息;但是这些操作都是临时的,以防止用户此时与应用程序其余的功能发生交互。
在理想状态下,用户可以与iOSapp发生非线性的交互,所以模态视图下最好的做法是最大程度的减小模态操作的数量。大体上说,当以下情况出现的时候,考虑使用模态对话:
-
必须引起用户关注的时候
-
某个任务必须被完成,或者明确被放弃,以避免在模棱两可的状态下遗漏用户信息(操作)。
**保持模态任务简单,简短并且高度聚焦。**你肯定不希望用户像使用一个mini app那样使用一个模态视图。如果一个模态对话中的子任务太复杂,用户会从暂停的主任务上迷失。创造一个包含一系列视图的模态任务时要特别注意这一点。如果一个模态任务必须在独立视图包含子任务,务必给用户一个独立、清晰的导航路径,并避免迂回。
总是提供一个显眼并安全的方法用以退出模态任务(cancel按钮)。
一个包含一系列视图的任务,必须让用户明白不同步骤中“完成”按钮的作用。
**保证对话框提供的信息都是必要的并是可操作的。**对话框是打断用户预期的,并且需要点击才会消失,所以让对话框所提示的信息必须是值得中断用户操作的,这对于用户体验来说很重要。
**尊重用户关于接收推送通知的选择。**在设置界面,用户可以设置app是否接收推送。必须遵循用户的设置,否则会触怒用户导致关闭所有推送通知。
交互性和反馈
标准手势让用户感到舒适
手势操作拉近了设备与用户之间的距离并提高他们的直接操纵感。在app中经常使用的统一手势操作如下:
避免使用与常规手势操作含义不同的动作。
避免创造与常规手势功能雷同的新手势。
**避免让用户用复杂手势完成某种任务。**手势操作务必保持简单,直接。
避免创造新的手势,除了在游戏中。
**对于iPad****来说,尝试使用多指手势。**iPad较大的屏幕给多指操作带来空间。虽然并不是每款app都需要复杂手势操作,但复杂手势可以丰富用户体验,比如多人同乐的游戏等等。