(转)iOS7界面设计规范(3) - UI基础 - 启动与退出
周二晚间来第三发,搞得好像今天是周六的赶脚。发掉之后再奖励自己一点冰啤酒吧,然后扑床去。天气热起来了,各位注意防暑降温呗。走起。
重要:这是针对于正在开发中的API或技术的预备文档(预发布版本)。虽然该文档在技术精确度上经过了严格的审核,但并非最终版本,仅供苹果开发者计划的注册会员使用。苹果提供这份机要文档的目的,是帮助你按照文中描述的方式对技术的选择及界面的设计开发进行规划。这些信息有可能发生变化,届时,你的设计开发方式需要基于最终版本的操作系统及文档进行相应的调整和测试。该文档或许会随着API或相关技术在未来的发展而进行更新。
译文最后更新时间:2013-06-18
即刻启动
一般情况下,用户可以在一到两分钟内对一款应用做出评估。如果你能利用这段时间迅速地呈现最有用的内容,就能充分激发新用户的兴趣,并且给所有用户带来出众的体验。
重要:绝不要在用户安装好你的应用之后告诉他们需要重启设备。重启需要花费时间,而且会让你的应用看起来非常难用且不可信赖。
如果出于内存使用或其他方面原因,使你的应用确实只有在设备重启之后才能正常工作,那么你需要首先解决这类问题。请参考iOS应用开发指南中的“高效地使用内存”。
尽可能地避免使用无意义的启动画面(欢迎画面)或其他类似的启动体验。最好让用户在启动你的应用之后可以立刻开始使用。
推荐的模式(左图)与不推荐的模式(右图)
应用安装完成后,不要让用户必须进行设置才能使用。取而代之地:
- 将解决方案聚焦在80%的用户需求上。这样,多数用户不需要进行任何设置就可以开始使用,因为默认参数可以确保应用能够按照这部分用户所期望的那样进行工作。
- 尽可能地从其他来源获取信息。如果用户在iOS内置应用或系统设置当中输入的信息可以为你所用,那么就尽量向系统查询这些信息,不要再让用户输入一遍了。
- 如果确实需要用户进行安装设置,尽量让他们在你的应用内部进行输入。然后,尽快储存这些信息(例如在应用的设置项当中)。这样,用户在享受你的应用之前就不需要被迫切换到iOS的设置当中了。如果他们将来需要修改这些信息,可以在任何时候进入应用设置当中进行操作。
尽可能晚些让用户登录。比较理想的状况是,让用户在不登录的情况下也能在应用当中尽量多的浏览内容,并使用部分功能。如果在用户上手你的产品之前就强迫他们登录,则会导致启动流程变得累赘拖沓。
一般来说,要按照默认的屏幕定向方式启动应用。对于iPhone,竖屏是默认的定向方式,而对于iPad来说,设备当前所处的状态就是其默认定向方式。如果你的应用只能在横屏模式下运行,那么要始终以横屏状态启动,让用户在必要的时候自己调转设备的方向。
最好让横屏应用能够同时支持两种模式的横屏,也就是Home按键分别在左侧和右侧的状况。如果设备当前已经处于横屏状态,那么横屏应用就应该按照当前的定向方式加载,除非你有充分的理由不这样做。在其他情况下,可以按照Home按键在右侧的方式加载横屏应用。
可以提供一张与应用首屏看上去几乎一致的启动图片,iOS会在应用被打开的同时即刻展现这张图片,这可以让用户觉得你的应用加载起来非常快,降低对等待时间的感知,使真正的内容有相对充裕的时间可以进行加载。可以参考启动图片了解相关的实现方法。
如果可能,不要让用户在初次加载应用时阅读免责声明或必须对用户协议进行确认。你可以直接在App Store当中展示这些内容,使人们在下载应用之前就能有所了解;不过,虽然这种方式通常能最大限度的减少麻烦的产生,但也不是一直可行的。如果在某些情况下你必须在应用内提供这类内容,那么要确保这些内容与整体UI保持和谐统一,与产品实际的业务功能带来的用户体验达成平衡。
在应用重启后,要恢复到用户退出时的状态,让他们可以中断的地方继续使用。不要让用户必须记住之前是通过怎样的步骤到达退出时的状态的。可以参考状态的维持与重置来了解相关的实现方法。
时刻准备着退出
iOS应用永远不会有用来执行关闭或退出的操作。用户退出一个应用的方式就是切换到另外一个应用、回到系统主界面,或是使设备进入睡眠模式。
当人们从你的应用切换到其他地方,iOS的多任务机制就会将它转至背景当中,并使用其他应用的UI替换掉当前的。为了应对这种情况,你的应用应该具备以下能力:
- 及时地、尽可能频繁地保存用户数据,因为处于背景状态的应用随时都可能被终结。
- 退出时,尽可能在细节层面保存当前状态,使用户回到你的应用之后不会失去之前的上下文状态。例如,如果你的应用包含可滚动的数据列表,那么在退出时要保存当前的列表位置。
有些应用即使处于背景状态也需要保持工作,譬如,用户会希望在查看待办事项或玩游戏时让另外一款应用继续播放音乐。可以参考多任务来了解怎样正确而优雅的处理这种情况。
永远不要以程序化的方式自动退出iOS应用,因为用户有可能将这种情况误解为程序崩溃。如果出于某些原因,你的应用无法按照预期正常的工作,你需要告诉用户当前的状态,并让他们了解自己能够做些什么。取决于问题的严重性,你有两种选择:
- 通过一个能够吸引用户注意力的界面描述当前问题,并提出执行建议。使用这样的界面作为反馈,可以让用户了解到应用本身并没有出现问题。这样还可以将主动权交还给用户,让他们决定执行矫正性的行为并继续使用应用,或是切换到其他应用。
- 如果只有一部分功能不可用了,那么可以在用户用到这些功能的时候,通过一个单独的界面或是弹出提示(alert)来告诉他们当前的情况。只在用户所访问的功能确实无法工作的时候再使用弹出提示。
译文代表原作者观点。欢迎发表评论,或到译者微博进一步交流探讨。
(转)iOS7界面设计规范(3) - UI基础 - 启动与退出的更多相关文章
- (转)iOS7界面设计规范(13) - UI基础 - 与iOS的系统整合
突然就到了周日傍晚.你永远不会知道自己的生活在接下来的一周当中能够发生多少变化:各种不可预知性所带来的更多是快感还是焦虑与不安,冷暖自知.相比之下,白天工作当中那些需求列表与排期文档就显得那么可爱了, ...
- (转)iOS7界面设计规范(2) - UI基础 - iOS应用解析
今天再来一发,然后结束掉周六的忙碌,去吃零食,还有冰啤酒:其实现在打嗝还有小龙虾味儿呢. 第二篇更多的是从技术的角度对iOS界面组成原理进行了简单的解析,篇幅很短,可稍作了解:更多关于iOS开发入门的 ...
- (转)iOS7界面设计规范(8) - UI基础 - 术语和措辞
讨厌周一,讨厌一周.今天中午交互组聚餐,却很开心:大家都是很厉害的人,你可以感到他们身上的能量,可以感到有些什么东西正在推着自己尽力向前走.这是一种很健康的状态,同时也很难得,自然越发需要珍惜.从无到 ...
- (转)iOS7界面设计规范(7) - UI基础 - 交互性与反馈
现在只是周日下午,可怎样都觉得整个周末就这样即将过去了,不免沮丧.看了好多集小丸子了,又不免觉得现在其实是在放暑假,可以一天一天的窝在家里做任何事,任何事.再上一篇iOS7设计规范,然后本周末就到这里 ...
- (转)iOS7界面设计规范(10) - UI基础 - 文字排版与配色
明天就是周四了.貌似前几天还在恨周一呢.话说今天几乎开了一整天的会,正经事情没做多少:这种感觉比一整天从早到晚12个小时的忙碌于一件事情还要让人感到疲惫的对叭?那今天的iOS7设计规范更新又是一篇很简 ...
- (转)iOS7界面设计规范(1) - UI基础 - 为iOS7而设计
今天开个新坑.其实老早就想做这事儿了.记得前一两年,苹果官方还会在开发者中心提供中文的HIG(Human Interface Guideline),后来给没了:网上能够找到的中文版本不知是官方还是同行 ...
- (转)iOS7界面设计规范(12) - UI基础 - 品牌
重要:这是针对于正在开发中的API或技术的预备文档(预发布版本).虽然该文档在技术精确度上经过了严格的审核,但并非最终版本,仅供苹果开发者计划的注册会员使用.苹果提供这份机要文档的目的,是帮助你按照文 ...
- (转)iOS7界面设计规范(4) - UI基础 - 布局
好吧,第四篇的样子,节奏还好:我怎么又是刚吃过小龙虾的状况呢. 今天的话题是布局,篇幅很短:我自己好喜欢这样,在还有些剩余时间和精力的情况下,一个话题一个话题的推进,做做译文,并热切的希望这些内容在自 ...
- (转)iOS7界面设计规范(11) - UI基础 - 图标与图形
不知别人如何,我自己来讲,平时很习惯很有动力去做的一些事,譬如博客吧,一旦生活中出现一些让自己很难受的状况,就很容易受到影响:像是,你平时所习惯的生活状态都是基于某种东西的,一旦这种东西崩塌,会影响到 ...
随机推荐
- PLSQL developer 连接不上64位Oracle 的解决方法
Windows 64位下装Oracle 11g 64位,PLSQL Developer使用出现以下问题: 1.Database下拉框为空:2.强制输入用户名.密码及Database,登录弹出: 引用 ...
- Java基础知识强化67:基本类型包装类之Integer直接赋值的面试题
1. 面试题: Integer i = 1: i += 1: 做了哪些事情? (1)其中Integer i =1:做了自动装箱( 使用valueOf()方法,int ---> Integer ...
- C#,.net获取字符串中指定字符串的个数、所在位置与替换字符串
方法一: public static int indexOf (字符串/字符,int从第几位开始,int共查几位) string tests = "1absjjkcbfka2rsbcfak2 ...
- asp.net验证控件注意事项
1.如果触发某个控件事件是只对指定验证控件进行验证,可以将验证控件和被触发控件放到到一个ValidationGroup中.比如点提交按钮的时候,验证文本框,可以将提交按钮和验证控件放到一个Valida ...
- 【socket.io研究】1.官网的一些相关说明,概述
socket.io是什么? 官网的解释是一个实时的,基于事件的通讯框架,可以再各个平台上运行,关注于效率和速度. 在javascript,ios,android,java中都实现了,可以很好的实现实时 ...
- C#高级知识点概要(1) - 委托和事件
本文目录: 委托 委托的简单使用 用委托实现插件式编程 多播委托 静态方法和实例方法对于委托的区别 泛型委托 Func 和 Action 委托 委托的兼容 事件 事件的基本使用 事件的标准模式 委托 ...
- 2016/01/10 C++ Primer 小记 —— 命令行编译环境配置
OK!第一篇博文!自贺一下! 今日看了此书的前几页.嗯,说得挺全,基础易懂. 之前学过c++,但没用过命令行编译. 本人用的VS里的编译器,文件名是cl.exe,在VC目录下. 虽然有了编译器,但并不 ...
- JS模拟键盘事件 -- 原理及小例子
提问: 键盘默认事件,比如tab切换,alt+f4关闭,ctrl+t新建等,如果不想通过键盘而是一些按钮点击来触发这些功能,该咋办呢? 例子: 先以tab为例上一个小例子: <!DOCTYPE ...
- mysql windows 下导入大文件
先进入你的mysql bin目录 cd D:/php/mysql/bin 输入命令 mysql -u 用户名 -p 密码 数据库名 < 文件路径 ...
- (翻译玩)SQLALchemy backref章节文档
Linking Relationships with Backref 自从在Object Relational Tutorial中第一次提到backref参数后,许多案例中也用到了backref,那么 ...

