1 UI设计基础
1.1 为iOS而设计
1.1.1 iOS包含以下3条设计原则:
- 遵从,UI应该有助于人们理解内容并且和内容进行交互,而不是与内容争夺人们的注意力。
- 清晰,文字内容应该在各个尺寸下都能清晰易读,图标应该清晰并且易于理解,装饰物应该细微且合适,应该由功能来驱动设计。
- 深度,视觉上的层次感和生动的交互动画会带来新的活力,有助于用户理解的同时还能提升愉悦感。
不管你正在重新设计一款旧的app还是设计新的app,请从以下几个角度进行考虑:
- 首先,重新审视UI和app的核心功能以确保他们之间的关联性。
- 然后,根据iOS的设计原则来设计app的UI和用户体验。谨慎合理地增加细节和修饰物。
- 最后,确保您的UI设计可以适配各种设备和操作模式,以便用户能在各种环境下使用您的app。
在整个设计过程中,随时准备推翻各种范例,质疑各种假设,并且聚焦于让内容和功能来驱动你做任何一个设计上的决策。
1.1.2 遵从内容
尽管新颖、美观的UI设计和流畅的交互动画可以提升iOS的用户体验,但内容才是核心。
这里有一些方法可以确保你的设计能提升功能性并且遵从内容。
有效地利用整个屏幕。 天气应用是一个绝妙的例子:漂亮的全屏大图表达了当前的天气情况,清晰的展现了最重要的信息,并且为每个时段的天气数据保留了空间。
重新考虑是否使用拟物化设计。 遮罩、渐变和阴影有时会导致UI元素变得过于厚重而影响用户对于内容的关注。取而代之的,应该专注于内容并且让UI扮演辅助的角色。
让半透明的UI组件暗示背后的内容。 半透明的组件比如控制中心可以提示上下文,帮助用户看到更多的可用内容,并且可以起到短暂的提示作用。在iOS中,半透明组件只会让它遮挡住的部分变得模糊,就像透过一张米纸看一样,屏幕的其他部分不会模糊。
1.1.3 确保清晰
确保清晰是另一种确保内容在你的app中处于核心地位的方法。这里有几种方法可以确保最重要的内容和功能清晰并且易于交互。
使用大量的留白 留白可以使重要内容和功能更加显而易见并且易于理解。留白也能营造一种平静和安宁的感觉,并且让app看起来更加聚焦和高效。
让色彩简化UI 主题色比如Note应用中的黄色,高亮了重要状态下的信息,并且暗示着可交互性。这也使得app的视觉主题具有了一致性。内置app使用了同样纯粹、干净的系统颜色,因而不管是在深色还是浅色的背景下看起来都非常不错。
使用系统字体以确保可读性 San Francisco(iOS的系统字体)使用了动态类型来自动调节字间距和行距,因而易于阅读并且在任何尺寸下看起来都非常棒。不管你使用的是San Francisco还是自定义字体,确保使用了动态类型,只有这样,当用户选择不同字体大小的时候,您的app才能响应。
使用无边框的按钮 默认情况下,所有的栏(bar)上的按钮都是无边框的。在内容视图,一个无边框按钮使用文本、色彩和操作指示标题来提示可交互性。当按钮被点击的时候,使用细边框或者浅色背景来加以区别。
1.1.4 使用深度来交流
iOS经常在不同的层上来展现内容,用以传达内容间的层级和位置,这有助于用户理解屏幕上对象之间的关联。
对于支持3D Touch的设备,轻压、重压和快捷操作可以让用户在不离开当前界面的情况下使用重要功能。
通过使用悬浮在主屏幕上的半透明背景,文件夹可以将内容和屏幕其他部分区分开来。
备忘录将内容清单以不同的层来展现。当用户使用某个清单的时候,其他清单将会被集中收起,放在屏幕的底部。
当用户在年月日之间切换视图的时候,日历使用增强的转场效果来给用营造一种层级感和深度感。在滚动年份视图的时候,用户可以看到当前的日期同时执行其他日历任务。
当用户选择了某个月份后,年视图会放大进入月视图。当前日期仍旧处于高亮的状态,年份将以返回按钮的形式出现,因而用户可以明确的知道他们在哪,他们从哪进入的以及如何返回。
类似的转场也会出现在当用户选择了某个日期时:月份视图将会被分开,将当前所在星期推向屏幕的顶部,并且将所选日期以小时的形式展现。通过所有这些转场动画,日历不断强化了年月日之间的层级关系。
1.2 iOS应用解析
几乎所有的app使用了由UIKit framework所定义的一些UI组件。了解这些基本组件的名称、角色和功能有助于你在app的UI设计方面做出更好的决策。
UIKit提供的UI组件可以大致分为以下4种类型:
- 栏(Bars),栏包含了可以告知用户所在位置的上下文信息,以及可以帮助用户导航和执行操作的控件。
- 内容视图(Content views),内容视图包含了app的具体内容,并且支持滑动、插入、删除和排序操作。
- 控件(Controls),控件可以执行操作或者显示信息。
- 临时视图(Temporary views),临时视图可以用来暂时性地提示用户重要的信息、额外的选项或者功能。
除了定义UI组件,UIKit还定义了对象的功能实现,比如手势识别、绘图、辅助功能和打印支持等。
从编程的角度来说,UI组件就是一种视图,因为UI组件继承自UIView。视图知道如何在屏幕上绘制其自身,而且知道用户何时在其边界内执行了点击操作。控件(比如按钮和滑块)、内容视图(比如集合视图和表视图)、临时视图(比如警告和操作菜单)都是视图。
为了管理app内一组或者一系列的视图,你需要使用视图控制器。视图控制器可以协助视图的显示,实现用户交互背后的功能,并且可以控制屏幕之间的切换。举个例子,『设置』使用了一个导航控制器来展示其视图之间的层级关系。
这里是一个关于视图和视图控制器协同展现UI的iOS app示例。
尽管开发者大多从视图和视图控制器的角度来思考,而用户更倾向于把iOS app当做一组屏幕内容的集合。从这个观点出发,在一个app中,屏幕内容应与单独的视觉状态或者模式相对应。
注意:iOS app 包含一个窗口。但是,不同于PC软件中窗口的定义,iOS窗口是不可见的,并且不能从屏幕上的一个位置移动到另一个位置。大多数iOS app只含有一个窗口;支持拓展显示的app可以包含两个及以上窗口。
在iOS Human Interface Guidelines中,屏幕这个词跟大多数人的理解一样。作为一个开发者,你可能需要阅读一下有关UIScreen的其他内容来更好地使用拓展显示屏幕。
1.3 适应性和布局
1.3.1自适应的开发
人们通常都希望能在任何设备和环境下使用它们喜爱的app,比如不同的设备方向和iPad上的分屏视图。尺寸类别和自动布局可以通过定义在显示环境改变后的屏幕布局、视图控制器和视图的适配来实现这样的需求。(现实环境的概念可以指整个屏幕或者屏幕上的某一个位置,比如弹出框的区域或者iPad上分屏视图中的某一区域)。
iOS在特征集合的定义中包含了显示环境的概念,包括尺寸类型、显示比例和用户界面语言。你可以使用特征集合来使你的视图和视图控制器响应显示环境的改变。(查看 UITraitCollection Class Reference以获取更多特征集和的相关信息)
iOS定义了常规和紧凑两种尺寸类型。常规尺寸类型与可拓展空间有关,紧凑类型与约束空间有关。为了描绘一种显示环境,你需要定义一种横屏尺寸类型和一种竖屏尺寸类型。正如你猜想的那样,iOS设备可以在竖屏时使用一组尺寸类型,在横屏时使用另一组尺寸类型。
iOS可以在显示环境的尺寸类型改变时自动生成新的布局。比如竖屏下尺寸类型由紧凑尺寸类型变为常规尺寸类型时,导航栏和工具栏会自动变高。
当你依靠尺寸类型来驱动设备的布局变化时,你的app会在任何显示环境下看起来都很棒。查看Size Classes Design Help,学习如何在Interface Builder中使用尺寸类型。
注意:在一个尺寸类型中,继续使用自动布局来进行小的布局调整,比如拉伸和压缩内容。查看 Auto Layout Guide,学习更多Auto Layout相关。
下面这个具体的例子可以形象的帮助你理解尺寸类型是如何描绘不同设备下的显示环境的。比如,iPad(包括iPad Pro)在横屏和竖屏下都使用常规尺寸类型。换句话说,iPad的显示环境在横屏和竖屏下都是常规的。
注意:在支持多任务的iPad中,你的app可能需要与别的app公用屏幕。确保你的app使用了自动布局,这样当用户使用多任务功能时你的app才能响应,比如Split View和Slide Over。
除了使用自动布局以外,当你在iPad Pro上展示可读性内容时,依靠UIView readableContentGuide特性是非常重要的,这样才会有对读者来说更为舒适的间距。
iPhone上的显示环境可以根据设备和握持方向的不同而改变。
竖屏下,iPhone6 Plus使用紧凑宽度和常规高度的尺寸类型。
横屏下,iPhone6 Plus使用常规宽度和紧凑高度的尺寸类型。
其他所有iPhone型号,包括iPhone6,使用同一组尺寸类型。
竖屏下,iPhone6、iPhone5和iPhone4s使用紧凑宽度和常规高度的尺寸类型。
横屏下,这些设备使用紧凑宽度和紧凑高度的尺寸类型。
1.3.2 在任何环境下提供良好的体验
当利用自适应来开发app,你就能确保UI可以正确的响应显示环境的改变。遵循这些规则就能在不同设备和环境下为用户提供更好的体验。
在不同环境下都聚焦主要内容。 这是最高优先级。人们通过使用你的app来浏览他们关心的内容并与之交互。当环境改变时,关注点的改变会误导用户,并让用户觉得失去了对app的控制权。
避免不必要的布局变化。 不同环境下一致的用户体验,可以在用户旋转设备或者在不同设备上运行你的app时维持他们的使用模式。比如,当你在横屏常规环境下使用网格来显示图片时,尽管你可能需要调整网格的尺寸,你并不需要在竖屏紧凑环境下用列表形式展现相同的数据。
如果你的app只在一个方向上运行,那么直接一点。 人们希望在不同的方向上使用你的app,能满足这样的需求是最好的。但如果你的app必须在一个方向上运行,你应该:
- 避免显示一个会告知用户转动设备的UI控件。 如果需要用户旋转设备,那就在支持的方向上清晰的运行,否则不要给UI增加不必要的复杂。
- 支持同一个方向上的切换。 比如,如果一个app只在横屏下运行,用户握持设备时,不管Home键在左侧还是在右侧,app都能使用。并且,当用户在使用app时180度旋转设备,你的app最好也能180度旋转来响应。
如果你的app将设备方向的转变视作用户输入的指令,那就以app设定的方式来响应旋转。 比如,一个用户通过转动屏幕来移动游戏部件的游戏,不应该以旋转游戏UI来响应用户旋转屏幕的操作。在这种情况下,你需要同时响应两种形式的旋转变换,并且允许用户切换,直到用户开始app的主体任务。当用户开始主题任务时,app开始按照设定的方式来响应设备的移动。
1.3.3 使用布局来交流
布局所包含的不仅仅是一个app的屏幕上UI组件的外观。通过布局,你可以告诉用户什么是最重要的,他们的选择是什么,以及事物是如何关联的。
通过强调重要内容和功能,使用户更易专注于主要任务。 几个比较好的方法是将主要的内容放置在屏幕的上半部分,并且遵从于从左往右的习惯,靠近屏幕的左侧:
使用视觉上的重量感和平衡来示意用户屏幕上元素的重要性。 较大的元素更能吸引眼球,并且相对于较小的元素更能传达重要性。较大的元素也更容易被点击,这让它们在app中更加有用,比如电话和时钟这两个用户经常在容易分心的环境下使用的应用。
使用对齐来简化浏览,传达分组和层级信息。 对齐可以使app看起来更整齐和有组织性,也让用户在滑动整屏的信息时更易集中。不同信息组的缩进和对齐传达了分组之间的关联性,并且使得用户更易定位特殊项目。
确保在默认尺寸下用户可以理解主要内容。 比如,用户不用水平滚动来阅读重要内容,或者不用放大就能看清主要图片。
为改变文字大小做好准备。 当用户在设置中选择不同的字体大小时,用户希望app能够正确响应。为了适应某些字体大小的改变,你可能需要调整布局;查看Text Should Always Be Legible,了解更多app文本显示信息。
尽可能避免UI表现上的不一致性。 通常情况下,外观相似的元素其功能也应相似。用户经常认为他们注意到的不同有其原因,并且尝试花费时间来尝试。
给每个可交互的元素足够的空间,从而让用户更易与内容和控件进行交互。 可点按的控件的大小是44×44点(points)。
1.4 启动和停止
1.4.1 立即启动
人们评价一个新app一般不会超过一至两分钟。当你最大程度地利用这段时间,立刻向用户展现最有用的内容,你就能激发起新用户对app的兴趣,并且给所有用户一种极致的体验。
重要:绝对不要在用户安装你的app后告知用户重启他的设备。因为重启设备需要时间,同时会使你的app看起来不是那么可靠且很难使用。
如果你的app有内存使用或其他会导致不重启设备就无法使用的问题,你需要向用户声明这些问题。查看Use Memory Efficiently,来获取更多有关如何开发一款运行良好app的指南。
尽可能地避免使用闪盘或者其他启动体验方式。 最好能让用户在启动你的app后能马上使用。
避免让用户在安装时做过多设置。 而因该:
- 专注于80%用户的需求。 这样,绝大部分的用户就不需要设置任何选项,因为app已经按照他们想要的那样设置好了。如果有些功能只有少部分用户会需要用到,或者大部分用户只会用到一次,那就别管他了。
- 尽可能的从其他途径获取更多信息。 如果你能使用用户提供的内置应用或设备的设置信息,那就直接向系统获取;不要让用户再次输入。
- 如果你必须要求用户设置信息,那就在你的app内直接提示用户输入。 然后,尽快将这些信息存储下来(通常存储在app的设置中)。通过这种方式,用户在享受你的app时就不必切换到系统的设置页面。如果用户在之后需要修改这些设置信息时,他们可以随时进入app的设置进行修改。
尽可能的让用户晚点登录。 最好能让用户在不登录的状态下浏览app的绝大部分页面和使用某些功能。比如,AppStore只有在用户决定购买某个app时才会提示用户登录。用户常常会放弃那些在他们还未使用任何有用功能前就强制其登录的app。
如果用户必须登录,那就向用户简短友好地说明为什么要先登录,并告知用户这样做会带来什么好处。
谨慎使用新手引导。(新手引导会介绍app的功能以及常用的任务操作。)在考虑新手引导前,你应该尽可能使app的功能和任务流更直观和易于发现。新手引导并不是一种好的app设计。如果你仍旧觉得新手引导是必要的,那就参考以下建议,设计一个简洁有目标性且不会阻碍用户使用的新手引导。
仅告知用户如何开始所需的信息。 一个好的新手引导仅告诉用户首先该做什么,或向用户演示绝大部分用户感兴趣的功能。如果你在用户使用你的app前就向其展示过多的信息,就会使用户背负必须记住所有这些目前他们并不需要的细节而带来的压力,并且会向用户传达”你的app很难使用”这样的信息。如果在某些特定的场景下需要额外的帮助,那就当用户在用到时再提示。
使用动效和交互来吸引用户并在使用中帮助用户学习。 谨慎的增加文字内容,仅在它们能够提升用户体验的时候使用;不要期望用户会阅读大段文字。比如,当你能用动画来向用户示范如何执行某项操作时,就不要用文字来描述。在引导用户使用执行较复杂的任务时,可以在每个步骤中使用浮层和简短的描述来告知用户所需要进行的操作。尽可能的避免使用app的截图,因为截图是无法交互的,并且会混淆截图和app的UI。
让用户能够容易地取消或者跳过新手引导。 当用户浏览过新手引导后,他们基本不会想再看一遍;其他用户可能根本就不想看新手引导。请记住用户的选择,不要让用户每次打开你的app时都要再选择一遍。
不要太早请求用户对你的app进行评分。 太早要求用户评分可能会激怒你的用户,并且可能会减少本该获得的有用反馈。为了鼓励用户更加深思熟虑的反馈,请确保在请求评分前给予用户足够的机会来使用你的应用并形成评价。比如,你可以等用户访问了一定数量的页面或完成了一定数量的操作后再请求评分。
通常情况下,以设备当前的方向启动app。 但是,如果你的app只在一个方向上运行,你应该让app始终以这个方向启动,如果需要的话可以让用户旋转设备。比如,如果一个游戏或者媒体观看应用只在横屏下运行,那即使在设备竖屏的情况下横屏启动也是恰当的。这样的话,如果用户在竖屏的情况下启动app,他们也能知道应该旋转设备来查看内容。
注意:只在横屏下运行的app最好能够同时支持两个横屏方向,即不管Home键在左侧还是在右侧。如果设备已经处在横屏状态,那就以该横屏方向启动app,除非你有更好的理由不这么做。其他情况时,可以让app以Home键在右侧的形式启动。(查看Adaptivity and Layout,来获取更多有关不同设备方向支持的信息。)
提供启动文件。 iOS会在app启动时显示一张图片,目的是让给用户一种你的app启动很快的印象,同时给予app足够的时间来加载内容。查看 Launch Files了解如何创建启动文件。
可能的话,避免让用户在初次使用app时阅读免责声明和终端用户许可协议。 你可以在AppStore里展示这些信息,这样用户在安装前就能有所了解。如果你必须在app内展示这些信息,请务必使这些信息与app的UI相协调,并且平衡app的商业需求和用户体验需求。
当你的app重启的时候,保存用户的使用状态,让用户能够在中断位置继续。 用户不需要记得到达当前页面所要经历的步骤。查看 Preserving Your App’s Visual Appearance Across Launches,了解更多保存和恢复app状态的方法。
1.4.2 时刻准备好中止
iOS app不会显示关闭或退出选项。 只有在用户切换到别的app、返回主屏幕或者将设备调至睡眠模式时,才会停止当前app。
当用户跳出你的app时,iOS多任务系统会将其转入后台,并用新app的UI替换。为应对这种情况,你的app应该:
随时保存用户的数据。 因为app在后台可能随时被终止或者退出。
在app终止的时候,尽可能保存最多的当前状态信息。 只有这样,当用户切换回你的app时,才能从中断处继续进行。比如,如果你的app显示可滚动的数据,保存用户当前滚动到的位置。查看 Preserving Your App’s Visual Appearance Across Launches,了解更多保存和恢复app状态的方法。
当用户在前台使用别的app时,有的app需要能在后台保持运行。比如,当用户在查看他的待办事项或者玩游戏的时候,用户会希望同时能够使用音乐app来听音乐。查看 Multitasking,了解如何正确处理多任务。
不要强制退出app。 用户会误认为是系统崩溃。如果app发生问题,你需要告诉用户当前的情况,并且告知用户如何操作。以下是两个比较好的方法:
如果app的所有功能都无法使用,那显示一些信息来告知用户情况并提示用户如何操作。 这些信息能够给与用户反馈,让用户明白app没有发生问题。这样也能缓和用户,让用户来决定是否采取纠正措施继续使用app,或是切换到其他app。
如果只是某些功能不可用,那么只在用户尝试使用该功能时作提示。 这样,用户就能正常使用app的其他功能了。如果你决定使用警告框,请确保只在用户尝试使用不可用的功能时弹出。
1.5 导航
用户通常不会觉察到app的导航体验,除非导航没有满足他们的期望。你的任务是让导航能够支撑
整个app的结构和目的,而且不能分散用户的注意力。
概括的来说,导航的类型有以下3种,每种导航都能适应一类app的结构:
- 层级(Hierarchical)
- 扁平(Flat)
- 内容或体验驱动(Content- or experience-driven)
在层级结构的app中,用户在每个层级中都要进行选择,直到用户到达目的地。为了导航到其他目的地,用户需要回溯到之前的某些步骤,甚至从起点重新开始,重新选择。『设置』和『邮件』是层级结构app的典型例子。
在扁平信息结构的app中,用户可以直接从一个主要类目切换到另一个,因为所有主要类目入口都能在主页面上找到。『音乐』和『AppStore』是使用扁平结构app的典型例子。
理所当然的是,在一个使用内容或者体验驱动信息结构的app中,导航也会根据内容或体验来设计。比如,用户在阅读书籍的时候从一页翻至下一页,或者在目录页选择某一页;在游戏中,导航是用户体验的重要部分。
在某些情况下,在app中结合使用两种以上导航样式也能产生不错的效果。比如,扁平信息结构下某一分类下的内容,使用层级结构来展现可能会更好。
用户应该总是能知道他们在哪,并且知道如何到达下一个目的地。 无论你的app使用了哪种类型的导航,最重要的是,用户使用路径应该是符合逻辑、可预见并且容易追溯的。
UIKit定义了一些标准的UI控件来简化层级导航和扁平导航的实现,另外,还有一些组件可以让你实现以内容为中心的导航,比如书本形式或媒体观看形式的app。游戏或者其他需要体验驱动导航的app通常需要自定义控件和操作。
使用导航栏来使用户轻松访问层级数据。 导航栏的标题可以提示用户当前所在的页面;返回按钮可以回到上一层级。查看 Navigation Bar了解更多。
使用标签栏显示一系列相同类型的内容或功能。 标签栏是显示扁平信息结构的一种很好的方式,它能让用户在各个分类间随意切换且不用在意当前所处的位置。查看 Tab Bar了解更多。
使用页面控件来显示一组相同类型的项或者页面。 页面控件可以直观的告诉用户有多少项或者页面,以及当前现实的是哪个。比如,『天气』使用了页面控件来显示所有用户打开的位置的天气情况。查看 Page Control了解更多。
通常来说,最好给予用户到达某一页面的唯一路径。 如果某一个页面用户需要在不同的情况下查看,考虑使用临时视图,比如模态视图、操作菜单或者警告框。查看Modal View, Action Sheet, 和Alert了解更多。
UIKit 也提供了以下两种相关控件:
- 分段控件,可以让用户在一屏内查看不同分类或方面的内容,且不用导航至其他屏幕。
- 工具栏,尽管工具栏看起来和导航栏、标签栏很类似,但它没有导航作用。工具栏为用户提供了可以对当前页面内容进行控制的操作。
1.6 模态场景
模态——是一种承载内容和体验,优缺点并存的模式。它可以给用户提供一种可以集中注意力来完成一个任务或是获取一些信息。但是,它会使得用户暂时性地无法使用app的其他部分。
理性情况下,用户可以与iOS app进行非线性的交互,所以,最好在你的app中减少模态体验的使用。通常来说,只有在一下情况考虑使用模态内容:
必须引起用户的注意的时候
一个独立的任务需要完成或者需要明确被放弃,避免在模棱两可的状态下丢失用户的数据的情况
确保模态任务简单、简短和高度集中。 你肯定不希望用户在你的app内体验模态视图时就像体验一个迷你app。如果一个子任务过于复杂,当用户进入模态内容时可能会忽略了主要任务。请谨慎创建一个视图层级过于复杂的模态任务,因为用户可能会迷失并且忘记如何追溯之前的步骤。如果一个模态任务必须在分视图中包含子任务,请确保为用户提供一个层级单一、清晰的导航路径,并且避免环形路径。查看Modal View,了解模态视图使用指南。
始终提供明显和安全的退出模态任务的途径。 确保用户在退出模态视图时能够预见操作的后果。
如果任务需要多层级的模态视图,请确保你的用户理解在最高层级按下完成按钮会造成的后果。 仔细审查任务,确定在低层级的完成按钮是完成该视图中的部分任务还是整个任务。因为可能存在的这种迷惑性,所以尽量避免在下级视图中使用完成按钮。
只在传递绝对重要的并且是可操作的信息时使用警告框。 警告框会打断用户的体验,并且需要一次点击才会消失,所以要让用户感到提醒消息是有用的,这种打断是有价值的。查看 Alert 了解更多。
尊重用户对于接受通知的偏好设置。 在设置中,用户会选择是否接受来自你的应用的通知。请尊重用户的选择,否则用户可能关闭所有的通知。
1.7 交互和反馈
1.7.1 可交互的元素会吸引点击
为了暗示可交互性,内置app会使用各种提示,包括对按压的响应,颜色,位置、内容、有意义的图标和标签。用户很少需要额外的修饰来提示他们屏幕上的元素是可交互的。
在一个支持3D Touch的设备上,当用户在主屏幕上按压图标时,模糊的背景会提示用户还有更多功能可以使用。
主题色可以给予用户强烈的可交互性视觉提示,尤其是在一些不大量使用其他颜色的app中。在『联系人』应用中,蓝色指代可交互的元素并且为app提供了一种统一、易识别的视觉主题。
返回按钮使用了几种提示来暗示其可交互性,传达它的功能:它以返回方向的形状显示在导航栏中,使用了主题色,并且它显示了上一屏的标题。
一个图标或者标题会清晰地指引用户来点击。比如,在『地图』应用中的标题“Flyover Tour”和“Directions to Here”,清楚地描述了用户可进行的操作。结合主题色,可交互的标题会使得按钮边界或其他修饰都显得多余。
在内容域,必要时可以给按钮添加边界或背景。 栏、操作列表、警告框上的按钮不需要边界,因为用户知道这些区域中大多数选项都是可交互的。但是在内容域中,按钮可能需要边界或者背景来与其他部分区分开来。比如,『音乐』、『时钟』、『相册』和『AppStore』会在某些特定的位置使用这样的按钮。
『相册』应用在”Start Sharing”按钮上使用了边界来将其与上部解释说明文字区分开来。
『时钟』应用的秒表和计时器页面中,使用了背景来强调开始和暂停按钮,并且使用户即使是在易分心的环境下依然可以简单地点击。
『AppStore』在列表项中使用了带边框的按钮来区分点击整一项获取详细信息还是点击按钮来下载或是安装应用。
1.7.2 用户知道基本的手势
用户使用手势,例如点击、拖拽或是捏合,来与app或是他们的设备来交互。使用手势操作拉近了用户和设备之间的距离,并且增强了用户对于屏幕上对象的直接操控感。用户通常希望他们使用的app中手势操作都是通用的。
用户在使用3D Touch时并不需要学习新的手势。当轻压屏幕上的图标时,用户可以很容易的发现3D Touch提供的额外交互方式。
点击,按压或选择一个控件或选项。
拖拽,滚动屏幕,或是拖拽一个元素从一边平移到另一边。
滑动,快速滚动或者平移
轻扫,单指轻扫返回上一屏、展开分视图控制器中的隐藏视图或者列表视图中某一项的删除按钮。另外,向上轻扫可以展开快捷操作(查看 3D Touch,获取更多信息)。在iPad中,四指上滑可以切换应用。
双击,放大并居中一块内容或图片。缩小(如果已经放大的话)。
捏合,双指张开放大,双指捏合缩小。
长按,在可编辑或选择区域长按可以在光标处显示一个放大视图。
摇晃,撤销或重做。
除了用户已知的标准手势以外,iOS定义了一些全局的手势操作,比如呼出控制中心或者通知中心。用户可以在任何app中使用这些手势操作。
避免赋予标准手势不同的操作。 除非你的app是游戏,重新定义标准手势的意义会使用户困惑并使你的app变得很难使用。
避免创建和标准手势操作相同的自定义手势。 用户已经习惯了标准手势操作,他们不希望学习不同的手势操作来实现相同的目的。
使用复杂的手势操作来作为任务的快捷操作,而不是唯一的操作。 尽可能给用户提供简单、直接的方式来执行某项操作,尽管这可能需要一次或两次额外的点击操作。简单的手势操作可以让用户专注于体验和内容,而不是交互。
通常不要定义新的手势操作,除非你的app是一个游戏。 在游戏或者其他沉浸式体验app中,自定义手势也是有趣体验的一部分。但是在普通app中,为了帮助用户完成重要的事情,最好使用标准手势操作,这样用户就不必花费格外的努力来发现和记住额外的手势。
在特定环境中,可以考虑使用多指操作。 尽管复杂的手势操作并不适合所有app,但是对于用户花费很多时间使用的app来说可以丰富体验,比如游戏或其他内容创建环境。谨记非标准的手势操作不容易被发现,应尽可能少用,且不应成为某一操作的唯一方式。
1.7.3 反馈有助于理解
反馈可以帮助用户了解app正在做什么,发现他们接下来可以做什么,并且理解他们操作的结果。UIKit 控件和视图提供了很多类型的反馈。
尽可能地将状态和其他相关反馈信息融入到UI中。 最好能让用户在不进行任何操作或跳出当前内容的情况下获取到这类信息。比如,『邮件』应用在不会影响用户内容的工具栏上显示当前邮箱的状态。
避免不必要的警告。 警告框是一种很强的反馈方式,但是它只应用于显示重要的信息或操作。如果用户看到过多显示无用信息的警告框,他们很快会学会无视所有的警告框。查看Alert,了解更多警告框的使用方法。
1.7.4 输入信息的方式要简单
不管用户点击控件还是使用键盘输入信息,都会花费时间和精力。当一个app在发挥作用之前要求用户输入很多信息,这会拖慢用户,并让用户觉得很沮丧。
让用户更容易地选择。 比如,你可以使用选择器或是表视图来取代文本域,因为大多数用户觉得在列表中选择一项要比输入文字来得简单。
适时地从iOS获取信息。 用户会在他们的设备上存储很多信息。如果可以的话,不要强制让用户提供那些你可以简单获取到的信息,比如联系人和日历信息。
提供有用的信息来平衡输入。 付出和回报的概念可以让用在使用你的app时感到不断取得进展。
1.8 动画
精美而细微的动画遍布iOS的UI,使得app的体验更加迷人和富有活力。
合适的动画可以:
- 传达状态和提供反馈
- 提升直接操控感
- 帮助用户形象化操作产生结果这一过程
谨慎添加动画,特别是那些不提供沉浸式体验的app。 过多的不必要的动画会影响app的流畅运行、降低性能,并且会分散用户对任务的注意力。
尤其要注意,要有目的、有节制的使用动效和UIKit动态组件,并且确保测试结果。正确使用动画有助于提升用户的理解度和愉悦度;滥用动画会使app让人困惑且难以操控。
合适的话,确保自定义动画与系统内置动画一致。 用户已经习惯于iOS内置app使用的细微动画。事实上,用户趋向于把视图之间平滑的切换、对设备方向改变的流畅响应和基于物理的滚动操作视作是iOS体验的一部分。除非你正在开发的是沉浸式体验app,比如游戏,自定义动画可以不同于系统内置动画。
使用一致的动画贯穿你的app。 就像其他类型的自定义一样,自定义动画也需要保持一致,这样用户一使用你的app就能建立起体验模型。
通常,自定义动画要确保现实性和可信性。 用户乐于接受外观上的艺术表现,但是当用户发现无意义的或是有违物理常规的动画就会陷入困惑。比如,当你从屏幕顶部下滑拖出一个视图,那么你就应该通过上滑来将它收起,因为这样做才能让用户记住这个视图是如何出现的。如果你下滑至屏幕底部来收起这个视图,那么你就会打破原来用户简历起来的心理模型。
1.9 品牌化
成功的品牌化不止不只是在app内加入品牌元素。优秀的app会将品牌元素与独特的外观和感觉相结合,为用户提供愉悦和难忘的使用体验。
在iOS系统中,可以很简单的使用自定义的图标、色彩和字体来创建有特色的的UI设计,使你的app与众不同。在你设计这些元素的时候,请注意以下两点:
每个自定义的元素本身应该具备良好的观感和功能性,同时它也要能与app中的其他元素相一致,不管这些元素是自定义的还是标准的。
为了在iOS中感觉舒适,你的app不需要看起来跟内置app一样,但是需要满足遵从、清晰和深度三条设计原则(查看Designing for iOS,了解更多有关这三个主题的信息)。花点时间来弄清楚这三条原则在你的app里意味着什么,然后在你的自定义元素里将他们表达出来。
在你的app里,当你想让用户注意到你的品牌时,请遵循以下几点。
以精致而不唐突的方式来融入品牌元素。 用户使用你的app来工作或是娱乐;他们不希望被强迫去看广告。为了最好的用户体验,你应该通过字体、颜色和图片的设计来潜移默化的让用户注意到你的品牌。
不要占据用户关心内容的空间。 比如,在屏幕顶部第二级位置用一栏固定展示品牌,会占据显示内容的空间。应该遵从用户的内容,考虑使用低打扰性的方式无处不在的展示品牌,比如使用自定义的色彩和字体或是专门设计隐含品牌元素的屏幕背景。
不要让logo遍布你的app。 移动设备的屏幕相对来说比较小,每次logo的出现都会占据用户内容一部分空间。而且,在app中展示logo能达到的目的跟在网页中展示是不一样的:通常用户很有可能来到一个不知道所属网站的网页,但是用户基本不可能在不看app图标的情况下打开一个app。
1.10 颜色和排版
1.10.1 颜色可以增强交流
在iOS中,颜色有助于暗示交互性、传递活力、提供视觉上的连续性。内置app使用了一组同样纯粹而又干净的颜色,使得他们不管是在亮色还是在暗色背景下看起来都协调又不失个性。
如果你要创建多种自定义颜色,确保它们能够协调。 比如,如果app使用柔和的色调,那么你就应该创建一组同样柔和而协调的色彩来贯穿整个app。
注意注意不同环境下的颜色对比。 比如,如果导航栏的背景颜色和导航栏按钮标题的颜色对比不够的话,用户就会很难发现这些按钮。一个测试你的颜色对比度是否足够的快捷但是不是很科学的方法就是在不同的光照环境下查看你的app,包括在晴天的户外。
虽然在设备上查看你的app能够帮助你在一定程度上找到某些需要改进的地方,但是这取代不了能产生更可靠结果的更客观的方法。这种方法涉及到判定前景色亮度和背景色亮度的比值。这个比值可以通过在线的对比度计算器来获取,或者你也可以使用WCAG2.0标准中的公示自己来计算获得。理想的颜色比值应该是4.5:1或更高。
当你需要自定义栏颜色时,考虑使用半透明的栏和app内容。 如果你需要创建匹配特定颜色的栏颜色,比如商标中的某种颜色,在得到你想要的结果之前,你可能需要试验各种颜色。栏的显示会同时受到iOS系统提供的半透明栏以及栏后面的app内容显示的影响。
API 注意:
使用tintColor属性来给栏按钮设置颜色;使用barTintColor来给栏设置颜色。查看 UINavigationBar Class Reference, UITabBar Class Reference, UIToolbar Class Reference, 和 UISearchBar Class Reference,了解更多栏属性相关内容。
关注色盲人群。 大多数色盲人群难以区分红色和绿色。测试你的app,确保你的app里没有那个页面使用红色和绿色作为区分状态或值的唯一途径(某些图像处理软件中有可以帮助你验证色盲友好性的工具)。通常来说,使用不止一种方式来暗示元素的交互性是一个好主意(查看Interactive Elements Invite Touch,了解更多有关iOS中交互性标识的内容)。
考虑使用一种主色来表明可交互性和状态。 颜色是UI元素表明可交互性的一种方式。如果可交互元素和不可交互元素使用相同的颜色,用户会难以判断应该点击哪里。
色彩并不一定会按照你想的那样传递信息。 每个人眼中的色彩都是不一样的,而且不同的文化也赋予颜色不同的意义。花点时间来研究其他国家或文化对于你的颜色方案的认知。你需要尽可能的确保你app的色彩能够传递正确的信息。
在大多数情况下,不要让色彩喧宾夺主。 除非颜色是你app的目的所在,颜色通常应该被用在细微的地方来提升体验。
1.10.2 良好的排版带来清晰地交流
Apple为全平台设计了San Francisco字体以提供一种悦目的、一致的排版方式和阅读体验。在iOS9和之后的版本中,San Francisco是系统字体。
San Francisco配合Dynamic Type可以为你提供:
- 一些列的字体大小自动提供最优的易读性,在任何用户设置下都能提供绝佳的阅读体验,包括辅助功能设置。
- 随字体大小自动调整字间距和行高
- 可以为语义上区别的文本块指定不同的文本样式,比如正文、脚注或者标题
- 文本可以正确相应用户对于字体大小的设置改变(包括辅助功能文本字号)
要下载San Francisco可以访问 https://developer.apple.com/fonts/。(注意San Francisco在iOS9中称为SF-UI。)当你在app中使用San Francisco时,你可以在模拟器的设置中调整字体大小来测试app的文本显示情况。
注意
如果你使用自定义字体,你仍旧可以使用Dynamic Type和scale type来适应系统的字号设置。你的应用必须正确响应用户对设置的改动。查看Text Styles,了解如何使用文本样式并确保当用户改变字号设置时你的app能收到通知。
San Francisco包含两类尺寸:文本类型和显示类型。当字号小于20点时使用文本类型,当字号大于等于20点时使用显示类型。当你在app里使用San Francisco时,iOS系统会在适当的时候在文本类型和显示类型间切换。
注意
当你使用应用例如Sketch或者Photoshop来设计app时,如果设置字号大于或等于20点,你需要切换到显示类型。iOS会根据字号的大小自动调整字间距(字间距即在某一字号下字母之间的间距)。表10-1和10-2分别为文本类型和显示类型下的字号字间距对照表。
为了强调某些文本或者为了给内容区块之间建立视觉关联,你可以使用由Dynamic Type支持的语义化定义的样式,比如标题和正文,或者你也可以指定字体权重,比如细体或是半粗体。使用Dynamic Type样式可以使你的内容更易地传达意义,但是如果你想更好的掌控你的设计,你可以对特定的文字设置特定的权重。(查看UIFont Class Reference,了解更多有关字体权重调整。)
比如,你可能想通过增加某些文本的权重来帮助用户形象化内容的结构,或者吸引用户注意到特定的词语或段落。或者你可以通过增加较小文字的权重减少较大文字的权重,在多样的相邻的标签里建立视觉上的聚合。字体权重对于app的整体风格和内容表达有很重要的影响,因此你应该选择特定的权重来打到特定的设计目标。
响应字体大小改变时注意区分内容的优先级。 并不是所有内容对于用户来说都是同等重要的。当用户选择了更大的字号,是为了让他们关注的那些内容更容易阅读;他们并不是想让屏幕上的所有文字都变大。
比如,当用户在辅助功能中选择较大字体,邮件应用会以较大字体显示标题和正文,其他不是很重要的信息比如日期和收件人仍旧以较小的字体。
确保自定义字体所有样式下的所有字号都是清晰的。 能实现这个的一种途径就是消防iOS系统在不同样式下显示不同字号字体的方式。比如:
文本大小不能小于11点,即使用户选择了极小的字号。相对的,正文字体大小不能超过默认的17点。
通常来说,字号和行间距在每一档字号之间相差1点。两种标题样式是例外,它们在极小、小和中等三种尺寸下使用相同的字号、行间距和字间距。
在最小的三种文本尺寸下,字间距相对较大;在最大的三种文本尺寸下,字间距相对较小。
标题和正文样式使用相同的字号。为了区分两者,标题会选择更粗的样式。
导航栏上的文本通常大小是17点,正文内容样式在设置最大尺寸时也是同样大小。
文本通常使用常规或者中粗体,不使用细或者粗体,因为在较小的字号下看起来不是那么好。
通常来说,使用单一的字体贯穿你的app。 混用多种不同的字体会让你的app看起来显得很杂乱。应该是用一种字体以及较少的样式和字号。
1.11 图标和图形
1.11.1 app图标
每个app都需要一个漂亮的app图标。通常用户会通过app的icon来建立对于app的质量、目的和可靠性的第一映像。
当你考虑app的图标时,请注意以下几点。如果你已经准备好设计app图标,那就查看App Icon来获取更多细节指导和说明。
app的图标是app品牌的重要组成部分。通过图标的设计可以告知用户app背后的故事并且与用户建立情感上的联结。
最优秀的app图标是独一无二、整洁、迷人和令人印象深刻的。
app的图标应该在不同的尺寸和背景下看起来都非常棒。在大尺寸下能丰富图标的细节在小尺寸下可能会使图标看起来很模糊。
1.11.2 小图标
iOS提供了很多小图标用以代表常规操作和操作,可以用在标签栏、工具栏、导航栏和主页的快捷操作。尽可能地使用内置图标,因为用户已经知道它们的意义了。
你可以创建自定义的栏图标来指代自定义的操作或内容。设计小的线性图标与设计app图标有很大的区别。如果你要创建自定义栏按钮,请查看Template Icon。
注意你可以在导航栏或者工具栏中使用文本替代图标。比如,日历应用在工具栏使用”Today”、”Calendars”、”Inbox”而不是图标。
为了确定在app的导航栏或工具栏使用文本还是图标,你需要考虑一屏上会同时出现多少图标。如果一屏上显示太多的图标会使你的app看起来难以理解。另外,这一问题会因为设备竖屏或横屏而不一样,因为横屏常规环境下栏会有更大的空间来显示文本。
1.11.3 图形
iOS app通常包含很多图形。不管是在显示用户的照片还是创建自定义图片,有以下几点你需要注意。
支持Retina显示屏。 确保你的app内的图片和图形都有高分辨率的版本。iPhone6 Plus需要@3x规格的图片,其他高分辨率的iOS设备需要@2x规格的图片。
以图片和图形的原始尺寸显示,不要放大超过100%。 你绝对不希望在你的app里图片或图形变形或过大。让用户自己决定是否放大或缩小图片。
在你的设计中不要使用苹果产品的图片。 这些图片都是受版权保护的,并且产品设计可能会频繁变更。
在你的设计中不要使用苹果app的图标、图片或屏幕截图。 苹果的设计是受版权保护的,不能在你的UI中显示除非是系统提供的。
1.12 术语和措辞
app中每一个词语都是你与用户对话的一部分。把握住每一次对话的机会,为用户提供清晰和舒适的使用体验。
设置应用对每个用户来说都是很重要的app,所以它使用简单、直接的语言来描述用户可以进行什么操作。比如,设置中的勿扰模式(Do Not Disturb),使用了简单易懂的语言来描述所有选项的作用,而没有使用普通用户难以理解的专业术语。
使用用户可理解的术语。 根据你对目标用户的理解来判断你计划是用的词语或短语是否合适。比如,在面向普通用户的app中使用技术术语是不合适的,但是在面向专业用户的app中,这些术语就是可以理解的。
使用非正式且友好的语气,但不要过于随意。 避免语气生硬或过于正式,但也不要虚伪、过于随意甚至傲慢无礼。请记住,用户会反复阅读UI中的文字,某些第一眼看起来机智的文字在反复阅读后可能会令人厌烦。
像一个报纸编辑一样思考,避免文字冗余。 如果你的UI文字简明扼要,用户可以很简单快捷地理解。提炼最重要的信息、简洁的表述、突出的显示让用户不必为了了解他们在寻找什么、接下来该做什么,而阅读过多的文字。
为控件增加简短的标签或者使用易理解的图标。 只要用户扫一眼,就能在第一时间知道这个控件能做什么。
显示日期的时候注意准确性。 当在你的UI中显示日期信息时,大多数情况下使用”今天”、”明天”会显得很友好。但是当你无法确定用户所在的时区时,这会使得用户产生困惑。举个例子,比如一项活动会在夜晚12点前开始。对于同一时区的用户来说,活动会在今天开始,但是对于早一个时区的用户来说,活动已经在昨天开始了。
把握住与潜在用户交流最佳的机会,在AppStore中为你的app写一个漂亮的简介。 除了准确的介绍你的app、强调你的目标用户期望的功能以外,确保:
修正所有的拼写、语法和标点错误。虽然这些问题可能并不会影响所有人,但可能会使一些用户对app的质量产生负面的印象。
将全大写的单词改为小写。尽管全大写的单词可以吸引用户的关注,但是整段都是大写的文字会让用户难以阅读,且可能会被用户认为是在叫喊。
可以考虑描述bug的修复。如果新版本的app修复了用户期待已久的bug修复,那就在简介中提及,这会是一个不错的idea。
1.13 与iOS融合
与iOS融合指的是给用户提供一种轻松、愉悦、宾至如归的体验;但这并不意味着创建的app应该看起来像内置app的副本一样。
将你的app与iOS融合的最好方法就是深刻理解iOS的设计原则(在Designing for iOS中有详细的描述),并且思考如何在你的app中遵循这些原则。当你这么做的时候,遵循本章中的指南能帮助你为用户提供他们想要的体验。
1.13.1 正确使用标准UI组件
尽可能使用UIKit提供的标准UI组件。 当你使用标准组件取代自定义组件时,你和你的用户都能受益:
- 标准UI组件会随着iOS系统的升级而自动更新,自定义组件却不能。
- 标准UI组件可以提供多种方式来自定义外观和行为。比如,所有的视图(继承自UIView)可以使用tintColor属性来设置颜色,方便你为app增加色彩。
- 用户熟悉标准UI组件,他们可以立刻理解如何来使用这些UI组件。
为了利用标准UI组件,以下几点你需要特别注意:
遵循每个UI组件的使用规范。 当UI组件的外观和功能都是用户所熟悉的,那么用户就能凭借已有的经验来帮助他们使用你的app。你可以查看Bars, Content Views, Controls, 和 Temporary Views 来获取UI组件使用指南。
避免混用不同版本iOS的UI组件。 你绝对不希望用户因为UI组件的显示看起来像来自别的版本的iOS而不是当前iOS版本,而感到困惑。
通常来说,不要创建一个自定义UI组件来实现标准UI组件的功能 首先,问问自己为什么要创建一个与标准UI组件功能相同的自定义UI组件。如果你只是为了自定义外观,你可以考虑使用UIKit提供的自定义外观API或者直接设置颜色。如果你只是想要一个与标准组件行为稍有不同的组件,请确保当你调整功能和属性后,标准组件是否能实现你想要的功能。如果你要完全自定义行为,那就设计一个与标准组件看起来不太一样的自定义组件。
提示
Interface Builder使获取标准UI组件、使用外观自定义API、修改性能和属性、获取自定义或系统提供的图标变得十分容易。查看Xcode Overview,了解更多Interface Builder相关信息。
不要使用系统定义的按钮和图标来表达其他意义。 iOS系统提供了很多能在你的app里使用的按钮和图标。确保你理解它们的意义;不要倚靠对于外观的主观判断。(你可以在Toolbar and Navigation Bar Buttons 和 Tab Bar Icons 里找到所有图标的意义。)
如果你在系统定义的按钮或图标里无法找到一个能与你app里某个功能相匹配的,你可以自己创建一个。查看Bar Button Icons,获取自定义图标指南。
如果你的app提供沉浸式任务或体验,那么创建完全自定义的控件是合理的 因为你在创建一个独特的环境,在这样的app中,用户探索如何控制环境,这就是用户想要的体验。
1.13.2 弱化文件和文档处理
iOS app可以帮助用户创建和操作文件,但这并不意味着用户需要考虑iOS设备的文件系统。
如果你的app帮助用户创建和编辑文档,那就为用户提供app定义的文件库视图,让用户能够打开已有文档或创建新文档。理想情况下,这种库视图:
- 高度图形化。 用户应该能够简单地通过屏幕上文档的图标来识别他们想要的文档。
- 让用户以最少的手势来完成任务 比如,用户可以水平滑动来滚动文件列表,通过点击来打开文档。
- 包含新建文档功能 用户可以通过点击文件库的占位图来快速创建文档,而不是到其他某个地方去创建新文档。
比如,Pages在图形化的库视图中,显示用户文档的同时提供一种简单的方式来创建新文档。
提示
你可以使用快速预览功能( Quick Look Preview )来让用户在你的app里预览文档,即使你的app无法打开这些文档。查看Quick Look,了解如何在你的app里提供这项功能。
如果你的app允许用户使用他们在其他app中创建的文件,你可以显示一个模态文档选择视图控制器来帮助用户找到这些文档。文档选择视图控制器可以显示用户iCloud Drive中的文档,还可以通过文档提供者扩展来获取其他文档创建或存储app里的文档。查看Document Provider Extensions,了解更多有关文档提供者扩展;查看Document Picker Programming Guide,了解更多有关文档选择视图控制器。
给予用户信心,他们的工作会被实施保存,除非用户明确取消或删除。 如果你的app帮助用户创建和编辑文档,不要要求用户执行明确的保存操作。iOS app应该担负起保存用户输入的职责,定期的或是用户打开别的文档或切换到别的app时自动保存。
如果你的app的核心功能不是内容创作,但是你允许用户在浏览信息和编辑之间切换,这种情况下可以询问用户是否保存修改。在这种情景下,通常显示内容同时提供一个编辑按钮。当用户点击编辑按钮时,用保存按钮取代编辑按钮,再增加一个取消按钮。这种编辑按钮的转换有助于提醒用户他们处于编辑模式,并且需要保存修改,取消按钮则允许用户不保存修改退出编辑模式。
1.13.3 需要的话提供设置选项
一些app需要给用户提供设置选项,但是大部分app可以避免或者延迟这么做。成功的app不需要用户另外设置就能很好的使用,同时也为用户提供方便的途径来调整以满足用户的体验。
当你设计app来满足大部分用户对于功能的期望,那就减少设置项。如果你需要获取用户的信息,那就向系统请求而不是要求用户来提供。如果你决定必须提供一些用户很少会去改动的设置项,查看 The Settings Bundle,了解如何在你的代码里支持这些设置项。
尽可能的在主UI里提供设置项。 如果选项代表主要的任务或者用户需要经常改动这些选项,那就将它们放置在主UI上。如果用户只是很少改动这些选项,那就把它们放到另外的视图中。
必要的话,帮助用户直接到达应用的app设置。 如果你以一条消息的形式来告知用户如何设置app,比如”进入设置>我的应用>隐私>本地服务”,那就用一个直接定位到设置的按钮来取代这些描述。查看 Settings Launch URL,了解如何允许这样的操作。
1.13.4 利用iOS技术
iOS提供了丰富的技术来支持用户应付常见得任务和场景。这意味着在你的app中使用iOS系统支持的技术往往要好于设计自定义技术。
一些iOS技术,比如多任务(Multitasking)和语音助手(VoiceOver),是所有app都应该涵盖的系统级功能。其他技术则适用于特定的app功能,比如票据和礼品卡管理(Wallet)、应用内购(In-App Purchase)、应用内广告(iAd Rich Media Ads)、接入游戏中心和iCloud。