iOS人机界面准则一系统准则和功能

* iOS人机界面准则

iOS设计原则、Mac版本的iPad应用、UI控件


* 应用架构

程序启动、启动屏、模态、导航、声请许可、设置


* 交互体验

3D Touch、Apple Pencil、声音控制、登录注册、信息输入、拖放、反馈、文件处理、手势、触觉、扫一扫、指针、撤销和重做


* 系统功能

AR、多任务处理、iPad的多窗口、消息通知、打印、快速浏览、评分和评论、屏幕截图、TV App


一、iOS设计原则


# iOS区别于其他平台的设计原则 #

1. 清晰

各种大小的文字都清晰易读,图标精确而清晰,装饰物微妙而恰当,由于对功能的高度关注激发了设计的灵感。留白,颜色,字体,图形和界面元素巧妙地突出了重要内容并传达了交互性。

2. 流畅

流畅的动作和清晰美观的界面帮助用户理解内容并与之互动。内容通常会填满整个屏幕,半透明和模糊暗示更多内容。尽量少的使用边框,渐变色和阴影保持界面透气性,同时确保内容的重要性。

3. 层次感

独特的视觉层和逼真的动画传达了层次感,赋予应用活力并便于用户理解。触摸和可发现性增强了用户的愉悦感,使其能够访问功能和内容而不会迷失。浏览内容时,视觉过渡提供了深度感。



# 应用设计原则 #

1. 完整性:即应用程序的外观、交互与功能的融合性。

2. 一致性:通过使用系统提供的界面元素,知名的图标,标准的文本样式和统一的术语来统一设计规范,并以人们期望的方式将功能与交互相结合。

3. 直接的操作:吸引用户去进行操作,帮助其理解操作目的,并使用户立即看到视觉反馈。

4. 视觉反馈:确认操作并显示操作结果以使用户始终了解情况。

5. 隐喻:用户能够在应用程序的控件和交互基于真实或数字世界中熟悉的经历时快速学习。用户与屏幕进行物理交互。

6. 用户控制:用户(而不是应用程序)应处于可控状态。应用程序可以建议采取行动或警告危险后果,但由应用程序来决策是错误的。最好的应用可以在用户受益与避免不必要的结果之间找到平衡。应用程序可使用熟悉和可预测的交互元素,可确认有破坏性的动作,并使其很容易取消操作(即使已经在进行中),从而使用户感到自己处于控制之下。


2、Mac版本的iPad应用

当使用Mac Catalyst创建Mac版本的iPad应用程序时,既可以提供给新用户使用,同时让老用户可以在新环境中使用。


# 开始之前 #

大多数iPad应用程序都是合适的最佳选择,但某些应用程序则依赖Mac上不存在的iPad功能。

对于不需要仅iPad功能的应用程序,确保其在Mac上运行良好的最佳方法是确保它在iPad上运行良好。

- 支持多种窗口缩放。

- 支持拖放。当支持iPad应用程序中的拖放操作时,在Mac上也可免费获得相同的支持。

- 使用键盘快捷键,包括常见的macOS快捷键。即使您的iPad应用程序可能并不总是可以使用键盘,iOS和macOS用户也喜欢使用键盘快捷键来简化与应用程序的交互。


# 规划Mac App的增强功能 #

使用Mac Catalyst创建Mac版本的iPad应用程序时,会自动支持Mac的基本功能:

- 系统偏好设置

- 键盘,触控板,鼠标和触摸栏输入,包括按键焦点和键盘导航

- 窗口管理

- 丰富的文本交互,包括复制和粘贴以及用于编辑的属性菜单

- 文件管理

许多系统提供的UI元素会自动从iOS转换为macOS:

- 拆分视图

- 文件浏览器

- 活动检视

- 表格

- 属性操作

iOS和macOS各自定义了用户交互规范,取决于人们使用其设备的不同方式。对其适应性影响最大的规范可分为四个关键领域。

1. 导航。许多iOS和macOS应用程序以相似的方式组织数据,它们使用不同的控件和可视指示器来帮助人们理解和浏览数据。

2. 用户输入和交互。尽管iPad和Mac都接受多种设备的用户输入,但是触摸交互遵循iOS规范,而键盘和鼠标遵循macOS的规范。

3. 菜单。Mac用户熟悉常驻菜单栏,并期望在菜单栏中找到所有应用程序命令。iOS没有常驻菜单栏,用户希望在应用程序的界面中找到应用程序命令。

4. 内容缩放。iPad应用的macOS版本中的文本看起来与iOS中相同,因为两个平台上均使用了SF字体。但iOS中的标准字体大小为17点,macOS中标准字体大小为13点。为确保文本和界面元素与macOS显示一致,iOS视图将自动缩小至77%。

除了遵循macOS交互和设计规范,还需要更新视觉设计和布局,以使macOS用户更好的体验更大的Mac屏幕。

- 将单列的内容和操作分为多列

- 在主要内容旁边显示检查器,而非弹出框内

- 同时显示应用程序层次结构的两个或多个级别

理想情况下,从macOS设计规范的角度看iPad应用程序有利于改进iOS版本。尽管想确保每个版本都遵循其平台的惯例,但还是应该重新审视原应用程序的设计。特别是iPad应用程序起源于iPhone,考虑重新测试布局视图和控件的方式,以查看是否存在可更好地利用iPad大屏幕的方法。


# 遵循macOS App结构和导航规范 #

大多数iPad应用程序使用平面导航或分层导航,某些应用程序将两者结合使用。平面导航将功能区域或数据类别显示为始终可见的对等组。分层导航以树状组织形式提供信息,人们可以通过选择每个视图中的一个项目来导航,直到他们到达目的地为止。

通常,iPad应用程序使用以下UIKit控件来实现导航:

- 标签栏:在屏幕底部持久显示顶级类别来支持平面导航。

- 页面控件:在屏幕底部显示点,指示当前页面在平面页面列表中的位置。

- 拆分视图:当用户在主视图中选择一个项目时,拆分视图会在辅助视图中显示与该项目关联的内容。

1. 如果在iPad应用程序中使用标签栏,考虑在拆分视图中使用分段控件或侧边栏。

- 分段控件是相互排斥的选项的最好选择。 对于每个选项卡中没有太多层次结构的iPad应用,分段控件是理想的选择,还可以与侧边栏搭配:使用分段控件来包含选项卡,并使用边栏来显示每个选项卡的内容。

- 侧边栏显示顶级项目列表,每个项目都可以显示子项目列表。使用侧边栏可简化导航,还可以让用户查看侧边栏中每个标签的内容。侧边栏是显示应用程序定义或用户定义的类别(不经常更改)的最好选择。

2. 如果在iPad应用程序中使用拆分视图,macOS会自动将其转换为Mac版本的拆分视图。但如果内容层次深于两个,Mac样式窗口中不会显示主视图和当前详细视图之间的中间层次。为了确保用户可以追溯自己的步骤,在工具栏中添加后退按钮。

3. 如果使用页面控件或另一种启用横向导航的方式,给用户特定的控件以查看页面。显示“下一个/上一个”按钮并将导航命令添加到菜单栏来帮助用户在Mac样式的窗口中导航。

4. 如果在iPad应用程序中支持多个窗口,那么也将在macOS版本中支持多个窗口。


# 支持macOS的交互 #

选择持久性是iOS和macOS用户交互的根本区别。由于许多macOS用户希望仅使用键盘来控制应用程序和系统,因此对象的选定状态必须保持不变。iOS用户希望在不先选择对象的情况下对它进行操作,因此对象不需要保留其选定状态。通常,iOS应用程序不会针对键盘交互进行优化。

以下是不同的交互规范可能影响用户体验的一些方式:

- macOS用户通常希望使用“下一个”和“上一个”按钮代替iPad或触控板手势。

- 在Mac上,用户希望使用Delete键或在属性菜单中选择Delete命令,因此通常不需要在UI中显示Delete按钮。

- iOS用户习惯于拉下视图以刷新内容。相反,Mac用户希望使用菜单命令,例如“检查新内容”。

在将iPad用户交互模式转换为Mac交互时,应遵守平台约定的方式来操作。

1. 键盘输入

准备支持键盘规范,用户可通过使用箭头键或按字母和数字键来更改持久性选择。

如果有用,充分利用Mac用户可同时使用键盘和鼠标或触控板这一习惯。

如果在iPad应用程序中实现UIKeyCommand来定义命令的键盘顺序,则macOS版本的应用程序会将这些快捷方式转换为菜单。

2. 手势

当您的iPad应用程序在macOS中运行时,大多数手势会自动转换。

https://developer.apple.com/design/human-interface-guidelines/ios/overview/mac-catalyst/


# 将应用程序命令放入菜单 #

因为iPad应用程序使用控件在主UI中显示命令,所以为每个应用程序命令找到一个逻辑直观的菜单栏位置是适应过程的关键部分。

要设计适用于您的macOS版本的应用程序的菜单栏菜单,请首先列出人们可以执行的所有操作,然后将其分组为标准菜单栏菜单定义的类别。

同样,为菜单中的所有常用命令支持键盘快捷键也很重要,这样使用键盘的Mac用户和iPad用户都可以从中受益。除了启用标准菜单项的快捷方式外,还可以定义自定义项的快捷方式。

1. 属性菜单

如果您在iPad应用程序中支持属性菜单,则系统会自动将其转换为应用程序macOS版本中的上属性菜单。

为了给Mac用户最好的体验,寻找其他地方来支持属性菜单。例如,Finder中的文件夹对象支持提供诸如在“新建选项卡中打开”,“重命名”和“复制”之类的操作的上下文菜单。


# 视觉设计注意事项 #


1. 布局

Mac用户希望应用程序窗口的大小可调整为全屏到应用程序允许的任何大小。为了支持这种无限可缩放性,并利用Mac的宽显示屏,必要时考虑将窗口内容区域中的元素并排排列。

- 尽可能采用自上而下的布局。macOS应用程序将最重要的操作和内容放在窗口顶部附近。如果iPad应用在工具栏或导航栏中提供了控件,将这些控件放入macOS版本的窗口工具栏中。

- 考虑将控件从iPad应用程序的主UI移到macOS窗口的工具栏。在macOS应用程序菜单栏的菜单中列出与这些控件关联的命令。

在macOS中,工具栏按钮始终可见,但是可能不可用;在iOS中,工具栏按钮始终可用,但可能不显示。最好用“齿轮”按钮,因为齿轮按钮菜单中的项目根据当前操作而有所不同。

- 从屏幕的左边缘或右边缘重新定位按钮。在iPad上,将按钮放在屏幕左中或右中边缘可以帮助人们触及它们,但是在Mac上,这种人体工程学并不适用,或将其放在macOS窗口的工具栏中。

2. 颜色

在两个平台上都使用系统颜色。通常,iOS应用程序可自定义用于着色按钮和指示器的颜色,但是在macOS中,人们希望使用系统偏好设置来选择所需的选择和按钮颜色。

为iOS背景设计的动态系统颜色会自动映射到相应的macOS等效项。

其他语义上定义的iOS颜色(例如系统颜色以及标签和分隔符颜色)映射为名称相似的macOS颜色。

- 不要在表格行中设置按钮色彩。在iPad应用中,可以使用颜色来表明表格中的按钮处于活动状态,但在macOS中,表格中的有色按钮看起来不正确。

3. 字体

尽管系统自动缩放可在不要求您在两个平台上指定不同字体值的情况下提供良好的效果,但可能无法在每种情况下均获得最佳效果。

- 确保Mac上的小字体清晰易读。放大iPad应用程序中使用的最小字体。另外,macOS不支持动态字体。

4. 自定义图标和字形

- 创建应用图标的macOS版本。默认情况下,macOS为您的iOS应用程序图标添加阴影,但最好设计Mac专用版本的应用图标。

- 如有必要,创建特定于平台的字形。如果iPad应用程序使用自定义标志符号,请在Mac上创建新标志符号。Xcode提供了一个单独的资产目录,可以在iPad应用程序中使用该目录来查找macOS特定的字形。

5. 首选项

iOS应用程序中的应用程序设置,会自动在Mac版本的应用程序的首选项窗口中显示。macOS在iOS设置中的每个项目的首选项窗口中添加一个工具栏按钮,以及用于该项目视图的标题。

- 自定义每个项目的工具栏按钮的图标。macOS自动为您的设置项目使用标准的系统偏好设置图标,因此用户必须阅读每个工具栏按钮的标题以区分多个项目。为了改善这种体验,为每个设置项目提供一个自定义图标。

- 使开关控件更易于macOS用户理解。与iPad应用程序不同,当使用开关在“系统偏好设置”中进行更改时,macOS应用程序通常会显示确认警报。此外,“ iOS设置”中的开关可以包含少量文本,以提供有关该开关如何影响用户体验的更多信息。在Mac版本中,除了可以提供简短说明以外,还可以指定当用户使更改设置时确认警报中显示的内容。

3、UI控件

- 栏:告诉用户在应用中的位置,提供导航,并包含用于启动操作和传达信息的按钮或其他元素。

- 视图:用户在应用中看到的主要内容,视图可以启用滚动,插入,删除和排列等操作。

- 控件:提供操作并传达信息。

除了定义iOS的界面外,UIKit还定义了应用程序可以采用的功能。例如,应用程序可以响应触摸屏上的手势,启用绘图,可访问性和打印等功能。

iOS 也与Apple Pay,HealthKit和ResearchKit 等其他编程框架和技术紧密集成。


二、应用框架


1、程序启动

启动体验会对用户对应用程序的感觉产生很大影响。启动体验应该是快速,流畅的。

1. 提供启动屏幕。系统在应用启动时显示启动屏幕,并迅速将其替换为应用的首屏。启动屏幕给人一种快速响应的印象,同时可以加载初始内容。为确保从启动屏幕无缝过渡,应设计一个类似于应用首屏但不会引起注意的简洁的启动屏幕。

2. 以适当的方向启动。如果应用支持纵向和横向模式,则应使用设备的当前方向启动。如果应用仅以一种方向运行,则应始终以该方向启动,并在必要时让用户旋转设备。除非有令人信服的理由,否则无论设备向左还是向右旋转,处于横向模式的应用程序都应自动确定方向。

3. 不要过早询问设置信息。为大多数用户设计应用,为少数希望使用不同配置的用户提供调整设置以满足他们的需求。尽可能从设备设置和默认设置,或通过同步服务(例如iCloud)获取设置信息。如果必须询问设置信息,在用户首次打开应用程序时提示他们,并让他们稍后在应用程序的设置中对其进行修改。

4. 避免显示应用内许可协议和免责声明。在App Store显示协议和免责声明,以便用户可以在下载应用之前阅读它们。如果必须在应用中包含这些,以平衡的方式显示它们,不要破坏用户体验。

5. 应用重启时,恢复以前的状态。

6. 不鼓励重启。重启会花费时间,并使您的应用看起来不可靠且难使用。如果应用程序存在内存或其他问题,除非系统重启,否则将很难运行,则需要解决这些问题。

7. 在首次启动后不久(或在人们使用您的应用程序时过于频繁)询问评级很烦人,并且很可能会减少有用反馈的数量。为鼓励经过深思熟虑的反馈,请人们花时间对您的应用发表意见,然后再要求进行评级。始终提供一种退出评级提示的方式,不要强迫用户评级。


2、启动屏

快速,有趣且具有教育意义的可选的启动屏可以帮助用户从您的应用中获得更多信息,而不会遇到麻烦。

- 人们很高兴有机会了解有关您的应用的更多信息,但他们也希望它仅仅正常运作。避免在启动图中包括设置或许可详细信息。

- 快速运行程序。系统将启动屏替换为应用首屏后,用户将立即进入并开始使用应用。如果需要提供教程或轮播介绍,给用户跳过的方法,并且不会向老用户显示。


3、加载

- 清晰的加载状态。至少显示一个加载指示器。更好的是,显示明确的进度,以便人们可以评估他们等待的时间。

- 尽快显示内容。立即显示屏幕,使用占位符文本,图形或动画来表示尚未加载的内容。在内容加载好替换这些占位符元素。有可能的话在后台加载即将到来的内容。

- 教育或娱乐人们以掩盖加载时间。考虑显示游戏玩法,有趣的视频或有趣的占位符图形。


4、模态

模态是一种以与用户先前的操作界面不同的临时界面来呈现内容,并且需要进行操作才能退出的界面形态。

- 帮助人们专注于一个独立的任务或一组紧密相关的选项

- 确保人们收到关键信息,并在必要时采取行动


# 模态弹窗 #

- 从屏幕顶部向下滑动

- 卡内容滚动到顶部时,可以从屏幕上的任意位置向下滑动

- 需点击一个按钮

用于无法实现复杂任务的非沉浸式模态内容。


# 全屏模态视图 #

- 全屏模态视图覆盖了整个屏幕。先前的视图被完全覆盖,从而将视觉干扰降至最低。人们通过点击按钮来关闭全屏模态视图。

- 使用全屏模式视图获取沉浸式内容(例如视频,照片或相机视图),或使用全屏演示的复杂任务(例如标记文档或编辑照片)。

1. 合适时使用模态。仅在需做出选择或执行与当前任务不同的非常关键的任务时将用户的注意力集中。

2. 使用警报以提供重要且理想的可操作信息。

3. 使模态任务简单,简短且重点突出。避免在应用程序内创建应用程序。如果模态任务太复杂,用户进入模态时可能会忘记他们暂停的任务。尤其要谨慎地创建涉及层次结构的模态任务,用户可能会忘记如何追溯其步骤。如果模态任务必须包含子视图,提供清晰的路径。除完成任务外,避免使用“完成”按钮。

4. 始终包含一个退出模态视图的按钮。可以使用“完成”或“取消”。包含可确保辅助技术可以访问模式视图的按钮,并提供手势。

5. 必要时,通过在关闭模式视图之前进行确认来帮助人们避免数据丢失。不管是使用关闭手势还是按钮来关闭视图,如果操作可能导致用户内容丢失,说明情况并提供解决的操作建议。

6. 不要在弹窗上显示卡片。弹窗顶部不应出现任何内容(可能会出现警报)。在极少数情况下,当人们在弹出窗口中执行操作之后需要卡片时,在显示卡片之前关闭弹出窗口。

7. 通常,显示说明模态任务的标题。当用户进入模态任务时,他们会离开先前的操作,因此最好使模态任务清晰。可以在视图的其他部分中提供文本,以更全面地描述任务或提供指导。

8. 统一模态视图与您的应用程序的外观。

9. 选择合适的模态过渡样式。默认过渡将模式视图从屏幕底部垂直向上滑动,在关闭时将其向下滑动。


5、导航

用户往往不留意应用程序的导航,直到功能与交互不符合他们的期望。以一种支持应用程序结构和目的的方式实施导航,而不会引起对自身的关注。导航应该自然而又熟悉,并且不应控制界面或将焦点从内容移开。

- 分层导航:每个屏幕选择一个选项,直到到达目的地。要到达另一个目的地,必须回溯步骤或从头开始并做出不同的选择。

- 平面导航:在多个内容类别之间切换。

- 内容驱动或体验驱动的导航:在内容之间自由移动,或者内容本身定义导航。游戏,书籍和其他沉浸式应用通常使用这种导航样式。

一些应用程序结合了多种导航样式。

1. 始终提供清晰的路径。人们应该始终知道他们在应用程序中的位置以及如何到达下一个目的地。无论导航样式如何,重要的是,内容的路径必须合理,可预测且易于遵循。如果需要在多个屏幕中操作,考虑使用表单,警报,弹窗或模态视图。

3. 设计可以快速而轻松地获取内容的信息结构。以最少的点击,滑动和屏幕数量的方式来组织信息结构。

4. 使用触摸手势创建流畅性。

5. 使用标准导航组件。

6. 导航栏标题可以显示层次结构中的当前位置,并使用后退按钮返回到先前的位置。

7. 使用标签栏显示同级的内容或功能。

8. 当具有内容类型相同的多个页面时,请使用页面控件。页面控件清楚地传达了可用页面的数量以及当前处于活动状态的页面。

9. 分段控件和工具栏无法启用导航。使用分段控件将信息组织到不同类别中。使用工具栏提供用于与当前上下文进行交互的控件。


6、访问权限

尽管人们喜欢使用可以访问此信息的应用程序所带来的便利,但他们也希望能够控制自己的私人数据。

1. 仅在您的应用明确需要时才请求个人数据。

2. 说明您的应用为何需要该信息。在系统的许可请求警报中提供自定义文本,并提供示例。

3. 仅在应用需要个人信息运行时才在启动时请求权限。

4. 不要不必要地请求位置信息。可以将警报延迟到某个功能真正需要它之前,或者完全避免警报。

5. 使用系统提供的警报。可以在标准权限警报中自定义文本。


7、设置

某些应用可能需要提供设置或配置选择的方法,但大多数应用可以避免或延迟这样做。成功的应用应立即对大多数人有效,同时还提供一些方便的方式来调整体验。当应用程序满足大多数人的期望时,就可以减少设置需求。

1. 利用系统功能推断。如果需要有关用户,设备或环境的信息,在可能的情况下向系统查询,而不是询问用户。如果用户拒绝访问其信息,则可以正常地退回到手动输入。

2. 合理地确定应用程序中的配置选项的优先级。应用程序的主屏幕是一些必不可少的或经常更改的选项的好地方。辅助屏幕最好用于仅偶尔更改的选项。

3. 在“设置”中显示不经常更改的配置选项。设置是整个系统中进行配置更改的中心位置,但用户必须离开应用才能到达那里。直接在应用程序中调整设置要方便得多。

4. 适当时提供设置的快捷方式。如果应用程序包含将用户定向到设置的文本,例如“转到设置> MyApp>隐私>位置服务”,提供一个自动打开该位置的按钮。


三、交互体验


1、3D Touch

在支持的设备上,可以通过向触摸屏施加不同程度的压力来访问其功能。

# 主屏幕互动 #

在运行iOS 13或更高版本的设备的主屏幕上,当触摸并按住应用图标时,可以显示属性菜单(在3D Touch设备上,人们短按该图标即可查看菜单)。

# 实时照片 #

在运行iOS 13或更高版本的设备上,人们可以通过将手指放在照片上来激活实时照片。在3D触摸设备上,则短暂按下实时照片。


2、Apple Pencil

1. 支持预期的行为。Apple Pencil专为标记制作而设计-不能用作指针或选择工具。

2. 提供一致的Apple Pencil和手指体验。不需要从Apple Pencil切换到手指即可与控件进行交互。

3. 将Apple Pencil放到屏幕上的体验应该与将经典铅笔放到纸上的体验相类似。使用Apple Pencil之前,不需要人们点击按钮或进入特殊模式。

4. Apple Pencil可以感应倾斜(高度),力(压力)和方向(方位角)。

5. 使用视觉反馈来指示与内容的直接联系。Apple Pencil应该看起来可以直接并立即处理内容。

6. 设计出色的左右手体验。避免将控件放置在可能被两只手遮挡的位置。如果有可能控件变得模糊不清,考虑重新放置控件。

7. 合适的话启用双击手势的用户设置。Apple Pencil通过直接(通过更改工具)或间接(通过显示颜色选项)更改其绘制方式来响应双击手势。尽管默认情况下双击会在当前工具和橡皮擦之间切换,但用户可以转到“设置”并指定双击应在当前工具和上一个工具之间切换,显示和隐藏颜色选择器,或者什么也不做。

8. 如有必要,为用户提供一种启用自定义双击行为的方法。当应用程序支持某些或所有Apple Pencil双击行为,同时还支持自定义双击行为时,提供一个控件,使用户可以启用该自定义行为。确保用户易于发现应用支持的替代行为,但默认情况下不要启用它们。

9. 请勿使用双击手势来执行修改内容的操作。人们可能会不小心轻按两次,这意味着他们甚至可能不知道您的应用已执行了该操作。双击在工具模式之间切换时,用户只需再次轻按两次即可轻松撤消意外的模式更改。但是,在使用手势执行动作的应用中,用户必须中断其工作流程才能找到一种方法来撤消该动作。


# 提供定制的图纸体验 #

使用PencilKit可以做笔记,为文档和图像添加注释并以iOS提供的低延迟体验进行绘制。PencilKit还可以轻松在应用中创建自定义绘图画布,并提供最新的工具选择器和墨水调色板。

1. 默认情况下,PencilKit画布上的颜色会动态调整为暗模式,因此人们可以在任一模式下创建内容,并且两种模式下的效果都很好。但是,当人们在现有内容(例如PDF或照片)上绘图时,您可能希望防止动态调整颜色,以使标记保持清晰可见。

2. 当应用在内容紧凑的环境中运行时,确保工具选择器不会遮挡内容。在常规环境中,工具选择器浮动在内容上方,以便用户可以将其移开,但在紧凑环境中,工具选择器保持固定在屏幕的底部边缘。为避免遮挡内容,可以调整内容视图的框架或滚动视图插图以说明工具选取器的高度。

3. 在紧凑环境中运行时考虑提供自定义撤消和重做按钮。在常规环境中,工具选择器包含撤消和重做按钮,但在紧凑环境中则不包含。在紧凑的环境中,可以在导航栏中显示自定义按钮。还可以考虑支持标准的三指撤消/重做手势,用户可以在任何环境中使用它。


3、声音控制

# 静音 #

用户希望禁用不必要的声音,包括键盘声音,声音效果,游戏音轨和其他声音反馈。当设备设置为静音时,仅应出现明确启动的声音,例如媒体播放期间的音频,警报以及音频/视频消息。

# 控制范围 #

无论是使用物理设备按钮还是屏幕上的滑块,人们都希望音量的变化会影响系统范围内的所有声音,包括音乐和应用内声音效果。唯一的例外是铃声音量,当没有积极播放音频时,始终会分别调整铃声音量。

# 耳机 #

插入耳机时,用户希望声音会自动重新开始而不会受到干扰。拔下耳机插头时,他们希望播放立即暂停。

# 设计出色的音频体验 #

1. 可以调整相对独立的音量,以实现完美的音频混合。但最终输出应始终由系统音量控制。

2. 允许在适当的时候自动转换音频输出设备。

3. 使用系统提供的音量视图进行音频调整。

4. 使用系统的声音服务可获得短促的声音和振动。

5. 如果合适则对音频进行分类。不同的音频类别允许通过静音开关将声音静音,与其他音频混合或在应用程序处于后台时播放。如果不需要,不要让人们停止听其他应用程序的音乐。https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/audio/

6. 发生中断后,在适当的时候恢复音频播放。有时当前播放的音频会被来自其他应用的音频打断。临时中断(例如打来的电话)被认为是可恢复的,应用应在中断结束时恢复播放。永久中断(例如Siri发起的音乐播放列表)被视为不可恢复。

7. 让其他应用知道您的应用何时播放完临时音频。

8. 仅在有意义时响应音频控件。人们可以从应用程序界面外部(例如,在“控制中心”中或使用耳机上的控件)控制音频播放,不管应用是在前台还是在后台。

9. 不要重新调整音频控件的用途。


4、登录注册

- 如果您不使用“使用Apple登录”,请使用“密码自动填充”。自动生成并填写密码和安全代码,花更少的时间在身份验证上。所有应用都应支持此功能。

- 尽可能延迟登录。

- 说明身份验证的好处以及如何注册服务。

- 通过显示适当的键盘来减少数据输入。例如,在询问电子邮件地址时,显示电子邮件键盘屏幕。

- 永远不要使用密码。当禁用生物特征认证时,密码用于解锁用户的iOS设备并通过Apple Pay进行认证。


# 人脸ID和触摸ID #

1. 尽可能支持生物特征认证。

2. 向人们展示一种认证方式。只需给他们一个选项,例如Face ID。仅当初始方法失败时,才提供备用选项(如要求用户名和密码)作为后备。

3. 仅响应用户操作来启动身份验证。显式操作(如轻击按钮)可确保用户想要进行身份验证。在人脸ID的情况下,这也增加了用户面对相机的可能性。

4. 始终标识身份验证方法。用于使用Face ID登录到您的应用的按钮的标题应为“使用Face ID登录”,而不是“登录”。

5. 准确引用身份验证方法。不要在支持Face ID的设备上引用Touch ID。相反,请勿在支持Touch ID的设备上引用Face ID。

6. 如果在系统级别启用了生物特征认证,则只需假设用户要使用它即可。

7. 不要使用图标来标识系统身份验证功能。


5、信息输入

1. 如果可能,提出选择。使数据输入尽可能高效。例如,考虑使用选择器或表格而不是文本字段。

2. 尽可能从系统获取信息。不要强迫人们提供可以自动收集或在用户许可下收集的信息,例如联系方式或日历信息。

3. 提供合理的默认值。尽可能用最可能的值填充字段。提供良好的默认设置可以最大程度地减少决策制定并加快流程。

4. 仅在收集所需的值之后才启用下一步。

5. 动态验证字段值。

6. 仅将必填字段用于进行下一步所必需的信息。

7. 轻松浏览值选择列表。特别是在表和选择器中,应该很容易选择一个值。考虑按字母顺序或以有助于快速扫描和选择的其他逻辑方式对值列表进行排序。

8. 在文本字段中显示提示以帮助传达目的。如果该字段中没有其他文本,则文本字段可以包含占位符文本,例如“电子邮件”或“密码”。当占位符文本足够时,请勿使用单独的标签来描述文本字段。


6、拖放


# 源位置和目的地 #

这些位置可以在相同的容器中(例如文本视图),也可以在不同的容器中(例如拆分视图相对侧的文本视图)。

在iPad上,源位置和目标位置也可以存在于不同的应用程序中,从而实现跨应用程序交互,拖动内容时,用户可以通过多任务处理,退出到主屏幕或从屏幕底部向上滑动以显示Dock 来访问另一个应用程序。

在应用程序之间拖放内容始终会导致内容重复而不是移动。


# 支持拖放 #

拖放是一项高效,直观的功能,用户希望在整个系统中普遍实现该功能。如果包含或产生了人们可能想要移动,复制或插入的文本,照片,视频,音频或其他内容,则应支持拖放操作。

1. 使拖放用于所有可选和可编辑的内容。可选内容应为可拖动内容,而可编辑内容应接受放置的内容。另外,确保应用支持在这些区域中进行复制和粘贴。

2. 如果适用,允许将内容拖放到控件上。通常,配置控件以使数据输入或选择(例如文本字段)能够接受拖放的内容。

3. 尽可能使用标准的文本视图和文本字段。这些系统提供的元素包括对拖放的内置支持。

4. 为了提高效率,考虑支持多项目拖放。在许多应用程序中,用户可以用一根手指拖动单个项目,而在拖动时,通过用另一根手指点击其他项目来选择其他项目。所选项目一起移动,并堆叠在拖动原始项目的手指下面。然后,用户将这些项目作为一个组拖放到所需的目标上。

5. 确定在应用程序中拖放内容是要移动还是复制。通常,在源容器和目标容器相同时(在文档中拖动文本),移动是有意义的;在它们不同时(在文档之间或在应用程序之间拖动),复制才有意义。但是,情况并非总是如此。在应用程序之间拖放内容始终会产生一个副本。

6. 尽可能让人们撤消拖放操作。如果已将其从应用程序中的其他位置移动,则应将其还原到其原始位置。

7. 考虑启用弹簧加载。借助弹簧加载,用户可以通过将选定的内容拖动到它们上方并短暂暂停而不删除内容来激活某些控件,例如按钮和分段控件。切勿使弹簧加载成为激活控件的唯一方法。将其用作可以发现的装饰。在大多数情况下,弹簧加载的控件也应响应轻击手势。


# 可拖放的内容 #

1. 如有必要,自定义拖动项目预览。通常,在用户手指下显示的预览应该是所拖动内容的半透明表示。此外观指示正在进行拖动,并且使用户能够查看拖动内容下方的目标。

2. 尽可能提供从最高到最低保真度排序的拖动数据的多种表示形式。例如,应用程序可以按顺序提供PDF矢量表示,具有透明性的无损PNG图像和不具有透明性的有损JPEG图像。这样,目的地可以选择可导入的最高质量的表示形式。

3. 如果适用,将自定义对象的本机版本显示为最丰富的数据形式。例如,一个让人们拖动图表的应用程序应首先显示本机图表对象。然后为不支持图表对象的应用程序提供其他选择(例如图表的图像版本)。

4. 当应用程序内容的传输非常耗时或占用大量资源时,提供文件传输扩展程序。直到用户放下内容,传输过程才开始。

5. 当应用程序内容需要时间传输时,提供进度信息。如果必须下载内容或大型文件需要时间来复制,请提供进度信息。至少要提供内容的总大小,以便目的地可以计算剩余时间并显示适当的进度指示器。


# 接受拖放内容 #

1. 使用视觉提示来识别潜在的目的地并预览拖放内容的效果。当内容在其上拖动时,视图可能会微妙地闪烁并改变颜色,或者段落可能会分开以为拖动的图像腾出空间。如果屏幕上可能有多个目的地,请一次识别一个目的地。如果源容器和目标容器相同,则突出显示可能是不必要的,除非将内容完全从源中拖出然后重新输入。

2. 适当自动滚动目标的内容。

3. 提取并显示拖放内容的最丰富的表示形式。如果您的应用程序支持图表,则它可以提取并显示本机图表对象。如果您的应用不支持图表,则可以提取并显示图表的图像版本。

4. 如果适用,仅提取所拖放内容的相关部分。如果用户将联系人从“联系人”拖动到邮件消息中的收件人字段,则仅使用名称和电子邮件地址,而不使用联系人的地址信息。

5. 拖放内容后,在表视图和集合视图中显示占位符。

6. 当拖放的内容需要时间传输时显示进度。默认情况下,在应用之间进行耗时的传输时,系统会显示应用模式警报。考虑自定义进度的显示方式(例如,通过在表视图或集合视图内的占位符上显示进度指示器),这样就不会阻止用户使用您的应用。

7. 当拖动的内容启动过程时提供反馈。如果用户将内容放到启动任务的控件上(例如,将视频上传到共享站点),则表明任务已开始并向用户通知其进度。

8. 拖放失败时通知用户。

9. 对放置的文本应用适当的样式。

10. 考虑提供一种微妙,直观的退出方式,以使用户无法立即撤消拖放操作。例如,共享应用程序可能会在发布删除的内容之前显示一个中间共享表。该共享表可以提供一种提供其他内容(如状态消息)的方式,同时还提供取消按钮。将照片拖到共享照片流中时,照片会表现出这种行为。


7、反馈

反馈有助于人们了解应用程序在做什么,发现他们下一步可以做什么以及了解操作结果。

- 将状态和其他类型的反馈毫不费力地集成到界面中。

- 避免不必要的警报。


8、文件处理

如果您的应用程序可以处理文件,尽可能淡化文件处理。

1. 除非取消或删除工作,否则始终可以保存。通常,不要让用户明确地保存文件。在打开和关闭文件以及切换到另一个应用程序时,应定期自动保存更改。在某些情况下(例如,在编辑现有文件时),保存和取消选项可能仍然有意义,以便确认何时实际捕获编辑。

2. 不要提供创建仅本地文件的选项。用户通常希望所有文件在所有设备上都可用。只要有可能,您的应用程序应该通过iCloud之类的服务来支持基于云的文件存储。

3. 实现直观的图形文件浏览界面。理想情况下,使用系统熟悉的文档选择器进行浏览。如果实现自定义文件浏览器,确保其直观且高效。文件浏览器高度图形化时,它们可以提供文件的直观表示,从而发挥最佳效果。为了更快地导航,考虑提供一个新文档按钮。

4. 让用户无需离开应用即可预览文件。即使应用并未真正打开,也可以使用“快速查找”功能使人们查看“主题演讲”,“数字”和“页面”文档,PDF,图像以及某些其他类型的文件的内容。

5. 考虑与其他应用共享文件。


9、手势

手势引发了与内容的紧密联系,并增强了直接操纵屏幕上对象的感觉。

1. 通常,使用标准手势。在游戏和其他身临其境的应用中,自定义手势可能是体验中有趣的一部分。在其他应用程序中,最好使用标准手势。

2. 避免使用标准手势执行非标准动作。除非活跃游戏中的游戏,否则重新定义标准手势的含义会导致混乱和复杂性。

3. 避免干扰系统范围的屏幕边缘手势。根据设备的不同,屏幕边缘手势可提供对主屏幕,应用程序切换器,通知中心,控制中心和Dock的访问。人们依靠这些手势在每个应用程序中工作。在极少数情况下,沉浸式应用程序(例如游戏)可能需要自定义屏幕边缘手势,这些手势优先于系统手势-第一次滑动调用特定于应用程序的手势,第二次滑动调用系统手势。应该谨慎地实现此行为(称为边缘保护),因为它使人们更难以访问系统级操作。

4. 提供快捷手势来补充而非替代基于界面的导航和操作。许多系统应用程序都包含一个导航栏,该导航栏提供清晰,可点击的按钮,可返回上一个屏幕。但是用户也可以通过从屏幕侧面滑动来向后导航。在iPad上,人们可以通过按“主页”按钮或使用四指捏手势退出到主屏幕。

5. 使用多指手势来增强某些应用程序的体验。尽管一次涉及多个手指的手势并不适合每个应用程序,但它们可以丰富某些应用程序(例如游戏和绘图应用程序)中的体验。


# 标准手势 #

人们通常希望以下标准手势在整个系统和每个应用程序中均能正常工作。

- 点按 激活控件或选择一个项目。

- 拖动。左右移动元素或在屏幕上拖动元素。

- 轻弹。快速滚动或平移。

- 滑动。用一根手指执行操作时,返回到上一个屏幕,在拆分视图控制器中显示隐藏的视图,在表格视图行中显示“删除”按钮,或在窥视中显示操作。在iPad上用四根手指执行操作时,将在应用程序之间切换。

- 双击。放大或居中显示内容或图像,或者缩小(如果已经放大)。

- 捏。向外捏时放大,向内捏时缩小。

- 触摸并按住。当以可编辑或可选文本形式执行时,将显示放大视图以定位光标。在某些视图(例如集合视图)中执行时,进入允许重新排列项目的模式。

- 抖动。启动撤消或重做。

- 旋转。旋转图像或视图。


10、触觉

- 使用标准的UI元素(如开关,滑块和选择器),默认情况下会播放Apple设计的系统触觉。

- 在有意义的情况下,使用反馈生成器播放通知,影响和选择类别中的几种预定义触觉模式之一。

- 在需要更多控制的情况下,编写并播放自己的触觉模式。

使用系统触觉时,iOS会管理反馈的强度和行为。

- 成功。表示任务或动作(例如存入支票或解锁车辆)已完成。

无论您使用系统提供的触觉器还是创建自己的触觉器,以丰富的用户体验而又不会分散人们的注意力的方式使用触觉器。


# 触觉设计 #

1. 理想情况下,人们总是知道您的应用为何会播放触觉模式。如果触觉不能增强因果关系,则可能会造成混淆,并且似乎是无缘无故的。

2. 通过触觉来补充应用中的其他反馈。当应用程序的视觉,听觉和触觉反馈协调一致时(就像它们在物理世界中一样),用户体验会更加连贯,并且看起来会更加自然。

3. 明智地使用触觉。例如,在提供持久价值时使用触觉;使用它们来增加新颖性可以使您的应用变得花哨。另外,最好将触觉添加到少数重要的,相应的交互中。

4. 始终使用触觉。触觉反馈的一致性有助于人们在某些触觉模式和某些体验之间建立触觉关联。

5. 避免过度使用触觉。

6. 确保在应用中测试触觉。与尽可能多的人一起测试触觉。

7. 使触觉为可选。

8. 在游戏中,考虑使用自定义触觉来增强玩家体验的方法。除了在玩家与项目和控件进行交互时播放触觉之外,可能还希望玩触觉来帮助传达游戏内事件。例如,触觉可以增强实质性体验(例如碰撞或撞击)或微妙的体验(例如接近脚步声或迫在眉睫的危险)。

9. 注意触觉可能会影响其他用户体验。触觉会产生足够的物理力,使人们感觉到设备在振动。确保触觉不会干扰涉及相机,陀螺仪或麦克风的用户体验。


# 创建自定义触觉模式 #

- 瞬态事件,即短暂,紧凑的感觉,就像敲击或冲动

- 连续的事件,感觉就像持续的振动

可以将清晰度视为将触觉体验抽象到产生相应物理感觉的波形中的一种方式。指定清晰度可以使体验意图传达给系统。强度是指触觉的强度。

通过组合瞬态和连续事件,变化的清晰度和强度以及包括可选的音频内容,创建各种不同的触觉体验。


11、扫一扫

# 应用内扫一扫 #

当应用程序处于活动状态时,该应用程序可以启用单对象或多对象扫描,并在希望用户进行扫描的任何时候显示扫描页。

- 不要鼓励用户身体接触。要扫描标签,iOS设备必须仅在标签附近。无需实际触摸标签。要求人们扫描物体时,请使用“ 扫描并保持靠近”之类的术语,而不要使用“ 轻触并触摸”。

- 使用平易近人的术语。某些人可能不熟悉近距离通信。为了使其易于使用,避免参考面向开发人员的技术术语。

- 为扫描纸提供简洁的说明文字。

# 系统背景扫码 #

在支持读取背景标签的设备上,只要屏幕亮起,系统就会自动查找附近的兼容标签。在检测到标签并将其与应用程序匹配后,系统会显示一条通知,通知用户可以点击以将标签数据发送到应用程序进行处理。请注意,当可见NFC扫描纸,正在使用电子钱包或Apple Pay,正在使用相机,设备处于飞行模式并且重启后设备被锁定时,将禁用背景读取。

- 支持后台和应用内标签读取。对于使用不支持后台标签读取的设备的用户,应用仍必须提供一种应用内方式来扫描标签。


12、指针(iPad)

为人们提供了与应用程序和内容进行交互的另一种方式-不能替代触摸。有些人可能继续仅使用触摸,而另一些人可能更喜欢使用指针或两者的结合。让用户选择如何与应用进行交互,并避免使界面缩水或做出要求他们使用指针的更改。


# 启用指针交互 #

1. 提供一致的体验,无论人们使用触摸屏,定点设备还是键盘。

2. 当用户对设备使用熟悉的手势时,确保应用中的所有区域都能正确响应。

3. 当用户在与应用中的对象进行交互时按住修饰键,可以提供一致的体验。

4. 区分指针和手指输入值。在这种情况下,使用指针或触摸来拖动播放头,使用指针悬停并单击精确的搜索目标。

5. 使用鼠标悬停来显示和隐藏自动最小化或淡出的控件。


# 指针形状和内容效果 #

iPadOS集成了指针和鼠标悬停的元素的外观和行为,用户可以将焦点集中在目标对象上。支持系统提供的指针效果,也可以自定义。

- 高光效果:指针转换为半透明的圆角矩形,该矩形充当控件的背景并包含柔和的视差。微妙的突出显示和移动使焦点集中在控件上,而不会分散人们的注意力。

- 电梯效果:结合高度,使元素外观的细微视差看起来像它漂浮在屏幕上方。当指针逐渐淡出元素下方时,iPad OS会通过向上缩放元素,同时在元素下方添加阴影和在元素顶部添加柔和的镜面高光来营造升空的效果。

- 悬停:指针悬停在元素上时将自定义比例,色调或阴影值应用于元素。不会改变默认的指针形状。


# 指针磁性 #

将指针移到某个元素附近时,系统会在指针到达元素的命中区域时立即开始变换其形状。由于命中区域通常会延伸到元素的可见边界之外,因此指针在它似乎接触该元素之前就开始转换,从而产生了该元素将指针向其拉动的错觉。

将指针滑向某个元素时,iPad OS会检查指针的轨迹以发现最有可能成为目标的元素。当指针路径中有一个元素时,系统会利用磁力将指针拉向元素中心。

默认情况下,iPad OS对使用提升效果(如应用程序图标)和突出显示效果(如条形按钮)的元素施加磁性,但不对使用悬停的元素施加磁性。

该系统还将磁性应用于文本输入区域,该区域可以帮助人们避免在选择文本时进行意外的垂直移动而跳到另一行。


# 支持标准指针和效果 #

1. 如果可能,启用系统提供的内效果。

- 对具有透明背景的小元素使用高光效果。

- 将电梯效果用于背景不透明的小元素。

- 将鼠标悬停在较大的元素上,并根据需要自定义缩放,色调和阴影属性

2. 标准按钮和文本输入区域,使用系统提供的指针外观。

3. 在交互式元素周围添加热区以创建舒适的点击区域。如果命中区域太小,可能会使人们感到与元素进行交互时必须格外精确。当元素的命中区域太大时,会感到将指针拉离元素需要花费很多精力。通常,在包含边框的元素周围添加大约12个填充点效果很好;对于没有边框的元素,最好在元素的可见边缘周围添加大约24个填充点。

4. 为自定义栏按钮创建连续的点击区域。如果条形图中相邻按钮的点击区域之间有间隔,当指针在按钮之间移动时,短暂地恢复其默认形状时,人们可能会分心。

5. 指定接收电梯效果的非标准元素的角半径。默认情况下,指针使用系统定义的角半径转换为圆角矩形。如果您的元素是不同的形状(例如,如果是圆形),则需要提供半径,以便指针可以无缝地动画化为元素的形状。


# 自定义指针的形状和效果 #

1. 对于类似于标准元素的自定义元素,建议使用系统提供的指针效果。

2. 在整个应用中以一致的方式使用指针效果。

3. 避免创建不必要的指针和内容效果。人们注意到指针或指针下面的UI元素的外观发生了变化,并且他们希望所做的更改会很有用。创建纯粹的装饰性指针效果可能分散注意力甚至使人烦恼,而没有提供任何实用价值。

4. 使自定义指针形状保持简单。理想情况下,指针的形状表示人们在当前上下文中可以采取的动作,而不会引起过多关注。

5. 考虑通过提供有用信息的自定义注释来增强指针体验。

6. 避免使用指针显示说明文字。

7. 自定义悬停效果时,考虑阴影,比例和元素间距的相互作用。通常,为可以增加大小而又不拥挤的元素保留缩放比例。对于周围空间很小的元素,考虑使用包含色调但不包含缩放和阴影的悬停效果。同样,不包含缩放比例的阴影使用效果也不佳,因为未缩放的元素似乎不会靠近观察者,即使其阴影暗示该元素已升高到屏幕上方。


13、撤销和重做

许多应用程序允许人们摇晃设备以撤消和重做某些操作。当以这种方式启动时,警报将要求用户确认或取消撤消或重做操作。

- 简要准确地描述要撤消或重做的操作。撤消和重做警报标题自动包含前缀“撤消”或“重做”(包括尾随空格)。需要提供一个或两个附加词来描述正在撤消或重做的内容,以显示在此前缀之后。例如,可以创建警报标题,例如“撤消名称”或“重做地址更改”。

- 如果将摇动手势用于撤消和重做,请不要将其用于其他操作。

- 谨慎地提供撤消和重做按钮。当应用程序提供多种执行同一任务的方式时,会造成混乱。如果您的应用确实需要专用的撤消和重做按钮,请使用系统提供的标准图标,并将其放在预期的位置,例如导航栏。

- 仅在当前上下文中执行撤消和重做操作。


四、系统功能

1、AR

- 仅在有能力的设备上提供AR功能。

# 创造引人入胜的舒适体验 #

1. 让人们使用整个显示器。避免使用会降低沉浸式体验的控件和信息使屏幕混乱。

2. 在放置真实物体时力求逼真。设计具有逼真的纹理的3D资产,创建看起来似乎放置于物理环境中的对象。反射环境光照条件并模拟相机纹理,在真实表面上投射自上而下的漫射对象阴影,并随着相机位置的变化而更新视觉效果。为避免破坏您创建的错觉,请确保您的应用每秒更新场景60次,以使对象看起来不会跳跃或闪烁。

3. 考虑具有反射表面的虚拟对象如何在环境中显示。ARKit中的反射是基于相机捕获的环境的近似值。为了帮助保持对AR体验是真实的幻想,选择较小或粗糙的反射表面,这些表面会淡化这些近似效果。

4. 使用音频和触觉来增强沉浸式体验。声音效果或碰撞感是确认虚拟对象已与物理表面或其他虚拟对象接触的一种好方法。背景音乐还可以帮助人们包围虚拟世界。

5. 简化环境中的文本。

6. 如果需要其他信息或控件,考虑在屏幕空间中显示它们。屏幕空间中的内容在虚拟世界中或在设备屏幕上(不太常见)显示为固定在一个一致的位置。人们通常很容易在屏幕空间中查找和查看内容。

7. 当需要提供持久控件时,考虑使用间接控件。 间接控件不是虚拟环境的一部分,而是在屏幕空间中显示的2D控件。这样用户不必调整他们握住设备的方式即可操作。另外,考虑在间接控件中使用半透明,以避免遮挡场景。

8. 预期人们会在各种现实环境中使用您的应用程序。人们可能会在没有太多移动空间或没有大而平坦的表面的地方打开应用程序。事先与人们清楚地交流您的应用程序的要求和期望,以帮助他们了解他们的物理环境如何影响他们的AR体验。可能还考虑提供在不同环境中使用的不同功能集。

9. 注意人们的舒适感。将设备长时间保持一定距离或一定角度可能会很疲劳。为避免引起疲劳,请考虑将物体放置在一定距离处,以减少将设备移近物体的需要。在游戏中,请考虑保持级别简短,并与短暂的停机时间混合在一起。

10. 如果应用鼓励人们移动,请逐步引入运动。给人们时间以适应您应用程序中的AR体验,然后逐步鼓励移动。

11. 注意人身安全。当人们沉浸在AR体验中时,他们不一定会意识到自己的周围环境,因此进行快速,横扫或张开的动作可能很危险。考虑使您的应用安全运行的方法;例如,游戏可以避免鼓励剧烈或突然的动作。


# 教学视图 #

在人们享受应用中的AR体验之前,他们需要允许ARKit评估周围环境并检测表面的方式移动设备。在iOS 13及更高版本中,可以使用内置的教学视图向人们展示如何做并在初始化过程中提供反馈。还可以使用教学视图来帮助人们重新初始化AR(此过程称为重新定位),例如,当人们短暂切换到其他应用程序而中断了AR体验之后。

- 当人们使用教学视图时,隐藏不必要的应用程序用户界面。默认情况下,初始化或重新定位开始时,辅导视图会自动出现,因此您应该准备隐藏不相关的UI,以帮助人们专注于辅导视图的说明。

- 如有必要,提供自定义的教学视图。尽管可以配置系统提供的教学视图来帮助人们提供特定信息(例如,检测水平面或垂直平面),但是您可能需要其他信息或希望使用其他视觉样式。如果要设计自定义的教学体验,请使用系统提供的教学视图作为参考。


# 帮助人们放置物体 #

1. 告诉人们何时定位表面和放置对象。ARKit检测到表面后,您的应用程序可以显示自定义视觉指示器,以显示何时可以放置对象。通过将指示器与检测到的表面的平面对齐,可以帮助人们了解放置的对象在环境中的外观。

2. 人们放置对象时,请立即将该对象集成到AR环境中。尽管表面检测可以快速逐步提高精度,但是最好避免在放置物体之前等待更精确的数据。当人们放置物体时,使用可用信息立即做出响应;然后,在完成表面检测后,如有必要,微调对象的位置。例如,如果人们将物体放置在检测到的表面之外,则将物体轻轻推回到表面上。

3. 考虑引导人们走向屏幕外的虚拟对象。可以通过提供视觉或听觉提示来帮助人们找到此类对象。例如,如果某个对象不在屏幕左侧,则可以在屏幕的左边缘显示一个指示器,该指示器可以指导人们将相机指向该方向。

4. 避免尝试将物体与检测到的曲面的边缘精确对齐。在AR中,表面边界是近似值,可能会随着人们周围环境的进一步分析而发生变化。

5. 合并平面分类信息以通知对象放置。例如,仅允许人们在分类为“地板”的平面上放置虚拟家具,或要求将分类为“桌子”的平面放置在虚拟游戏板上。


# AR交互 #

1. 当人们可以通过直接触摸屏幕上的3D对象而不是在屏幕中使用间接控件来与之交互时,它具有更加身临其境且直观的感觉。但在人们四处走动的情况下,间接控件可以更好地工作。

2. 让人们使用熟悉的标准手势直接与虚拟对象进行交互。

3. 通常,使交互保持简单。

4. 在交互式虚拟对象的合理接近范围内响应手势。当人们试图触摸小,细或相距一定距离的物体上的特定点时,可能很难。当应用检测到附近的手势时,最好假设人们想操作该对象。

5. 合适时支持用户启动的对象缩放。

6. 不要使用缩放比例来调整对象的距离。

7. 注意潜在的冲突手势。例如,两指捏合手势类似于两指旋转手势。如果您执行两个类似的手势,请确保测试您的应用并确保正确解释了它们。

8. 努力实现与应用程序AR环境的物理性质一致的虚拟对象移动。人们不一定希望物体在粗糙或不平坦的表面上平稳移动,但他们确实希望物体在运动过程中保持可见。旨在将移动的物体保持附着在现实世界的表面上,并避免在人们调整大小,旋转或移动它们时导致物体跳跃或消失并重新出现。

9. 探索更多引人入胜的互动方法。手势并不是人们与AR中的虚拟对象进行交互的唯一方式。您的应用可以利用其他因素(例如运动和接近度)来使内容栩栩如生。例如,游戏角色可以朝一个人走去时转过头看着一个人。


# 多用户体验 #

当多个人共享AR体验时,每个参与者都将独立映射环境,ARKit会自动合并这些地图。

- 如果您的应用程序支持将虚拟对象放置在出现在设备摄像头中的人的后面,请让人们遮挡这些对象,以增强对现实的幻想。

- 如果可能,让新参与者进入多用户AR体验。除非您的应用要求所有参与者都在体验开始之前加入,否则考虑使用隐藏地图合并使新用户迅速加入正在进行的AR体验。


# 对现实世界对象的反应 #

可通过使用现实环境中的已知图像和对象来触发虚拟内容,从而增强AR体验。为实现此类体验,应提供一组2D或3D参考对象,ARKit指出在当前环境中何时何地检测到其中任何一项。

- 当检测到的图像第一次消失时,考虑延迟删除与其相连的虚拟对象。ARKit不会跟踪每个检测到的图像的位置或方向的变化。为帮助防止虚拟对象闪烁,考虑等待一秒钟,然后使其淡出或移除。

- 限制一次使用的参考图像数量。当ARKit在实际环境中查找100张或更少的不同图像时,图像检测性能最佳。如果需要超过100张参考图像,则可根据操作更改活动参考图像的集合。

- 限制需要精确位置的参考图像的数量。更新参考图像的位置需要更多资源。当图像可能在环境中移动时,或者当附加的动画或虚拟对象与图像大小相比较小时,使用跟踪的图像。


# 交互体验 #

1. 如果必须显示说明文字,请使用易于理解的术语。AR是一个可能使某些人感到恐惧的高级概念。为了使它易于使用,请避免使用ARKit,世界检测和跟踪之类的技术术语。使用大多数人都会理解的友好的会话性术语。https://developer.apple.com/design/human-interface-guidelines/ios/system-capabilities/augmented-reality/

2. 在三维环境中,使用3D提示。例如,将3D旋转指示器放置在对象周围比在2D叠加层中显示基于文本的指令更直观。除非不响应操作提示,否则避免在3D中显示文本叠加提示。

3. 使重要的文本可读。使用屏幕空间来显示用于关键标签,注释和说明的文本。如果需要在3D空间中显示文本,请确保文本面向人,并且使用相同的字体大小,不管文本和带标签的对象之间的距离如何。

4. 如有必要,提供一种获取更多信息的方法。设计适合您的应用程序体验的可视指示器,向人们展示他们可以点击以获取更多信息。


# 中断 #

在中断期间,例如人们短暂切换到另一个应用程序或接听电话时,ARKit无法跟踪设备的位置和方向。中断结束后,先前放置的虚拟对象可能会出现在错误的实际位置中。启用重新本地化后,ARKit会尝试使用新信息将这些虚拟对象还原到其原始实际位置。

1. 考虑使用系统提供的教学视图来帮助人们重新定位。

2. 考虑在重新定位期间隐藏先前放置的虚拟对象。

3. 如果应用程序同时支持AR和非AR体验,可最大程度地减少干扰。避免中断的一种方法是将非AR体验嵌入到AR体验中,这样人们就可以处理任务而无需退出并重新进入AR。

4. 允许人们取消重新定位。如果不将设备放置在靠近中断之前的位置,则重新定位将无限期地继续,而不会成功。如果指导人们恢复其会话不成功,请考虑提供一个重置按钮或其他方法来重新启动AR体验。

5. 指出前置摄像头何时无法跟踪面部超过半秒。使用视觉指示器指示相机无法再跟踪人的脸部。如果在这种情况下需要提供文字说明,请尽量减少文字说明。


# 解决问题的建议方法 #

- 如果人们没有达到他们的期望,让人们重新设置体验。不要强迫人们等待条件改善或在放置物体时遇到困难。给他们一种重新开始的方法,看看他们是否有更好的结果。

- 如果出现问题,请提出可能的解决方法。由于多种原因,对现实环境的分析和表面检测可能会失败或花费太长时间-光线不足,反射面过多,表面细节不足或相机运动过多。如果您的应用收到有关这些问题的通知,请使用简单,友好的语言来提供解决问题的建议。


# AR字形 #

应用程序可以在控件中显示AR字形,以启动基于ARKit的体验。

- 按预期使用AR标志符号。该标志符号应严格用于启动基于ARKit的体验。切勿更改字形(除非调整其大小和颜色),将其用于其他目的或与未使用ARKit创建的AR体验结合使用。

- 保持最小的空白空间。AR字形周围所需的最小空白空间是字形高度的10%。不要让其他元素侵犯此空间或以任何方式遮盖字形。


# AR徽章 #             

1. 按预期使用AR徽章,请勿更改。

2. 将AR徽章优先于仅字形徽章。通常,将仅字形徽章用于无法容纳AR徽章的受限空间。两种徽章在默认大小下均可正常工作。

3. 仅当应用包含可以在AR中查看的对象和不能在AR中查看的对象的混合时,才使用徽章。如果可以在AR中查看应用程序中的所有对象,则标记是多余的。

4. 保持徽章放置的一致性和清晰性。始终将其放置在同一角落,并确保其足够大以至于清晰可见。

5. 保持最小的空白空间。AR徽章周围所需的最小空白空间是徽章高度的10%。


2、多任务处理

- 从屏幕右侧滑动即可访问“滑行”,以在不离开当前应用程序上下文的情况下临时使用第二个应用程序。

- “拆分视图”使您可以同时使用两个并排的应用程序,

- “画中画”可以使您在另一个应用程序中工作时观看视频。

应用不应使用过多的CPU,内存,屏幕空间或其他系统资源。它应能很好地应对其他应用程序的突然中断和音频,能够快速流畅地过渡到后台。

1. 设计一个适应性强的界面,在拆分视图中运行时看起来很棒。当用户切换多任务模式,旋转屏幕或更改文本大小或区域时,自适应界面会自动调整其UI元素和布局。

2. 为中断做好准备,并准备好恢复。

3. 确保界面与双高状态栏一起使用。某些功能(例如进行中的电话,录音和网络共享)会在屏幕顶部显示一个附加状态栏。在未经准备的应用中,此增加的高度可能会由于遮盖或压下其他界面元素而导致布局问题。在启用这些功能的情况下测试您的应用,以确保您的界面能够正确响应并且看起来仍然不错。

4. 暂停需要关注或积极参与的活动。例如,如果您的应用是游戏或媒体查看应用,请确保人们在切换到另一个应用时不会错过任何内容。当他们切换回去时,让他们像从未离开过一样继续前进。

5. 适当响应外部音频。对于较短的中断(例如GPS定向通知),您的应用应暂时降低其音量或暂停其音频,并在中断结束时恢复播放。

6. 在后台完成用户启动的任务。当某人开始执行任务时,即使他们离开了您的应用程序,他们也希望任务完成。

7. 谨慎使用通知。您的应用可以安排在特定时间发送通知,无论您的应用是已暂停,在后台运行还是根本不运行。通知可以传达重要信息,但可以避免过多地困扰人们。例如,您的应用程序每次在后台完成任务时都不会显示通知。相反,让人们返回到您的应用来检查任务。


3、iPad的多窗口

要在Mac版本的iPad应用程序中支持多个窗口,必须在iPad上支持多个窗口。

- 将应用程序的Dock图标拖到屏幕侧面,以选择其当前窗口之一或创建一个新窗口

- 将一个对象拖到屏幕的一侧,然后将其拖放到系统提供的放置目标上

- 触摸并按住主屏幕或Dock上的应用程序图标,在出现的上下文菜单中点击“显示所有Windows”,然后点击“添加(+)”按钮

- 触摸并按住一个对象,直到显示一个属性菜单,其中包括在新窗口中查看该对象的选项

iPad应用程序通常使用两种类型的窗口。人们可以使用主窗口浏览应用程序的整个层次结构,并访问应用程序的所有对象以及与之关联的操作。一个辅助窗口经常支持模态任务或包含单个对象和与它相关联的动作; 在这两种情况下,人们都倾向于在完成辅助窗口后关闭辅助窗口。

- 如果项目是内容文件夹,请使用主窗口。

- 如果项目是单个文档或文件,并且人们在完成与项目的交互后很可能会关闭新窗口,使用辅助窗口。

1. 确保辅助窗口本身是有用的。避免仅使用辅助窗口来提供可用于主窗口内容的选项或工具。

2. 使用辅助窗口中的“完成”或“关闭”按钮。当主窗口显示文档时,该窗口通常包含一个“后退”按钮,使人们可以导航到父视图。相反,当辅助窗口显示文档时,应将“后退”按钮替换为“完成”或“关闭”按钮,因为人们希望在完成辅助窗口的工作后将其关闭。


4、消息通知

无论设备处于锁定状态还是使用状态,应用程序都可以使用通知随时提供及时且重要的信息。人们会在锁定屏幕上,使用设备时在屏幕顶部以及在通知中心(通过从屏幕顶部向下滑动打开)来查看通知。每个通知都包含应用程序名称,一个小应用程序图标和一条消息。通知中还可能伴有声音,并可能导致徽章在相应应用程序的图标上显示或更新。

通知可以是本地或远程的。本地通知始发并在同一设备上传递。待办事项列表应用程序可能会使用本地通知来提醒某人即将举行的会议或到期日期。远程通知(也称为推送通知)来自服务器。多人游戏可能会使用远程通知来让玩家知道他们的游戏动态。


# 通知行为 #

- banner。使用设备时出现在屏幕顶部几秒钟,然后消失。

- 警报。使用设备时显示在屏幕顶部,并停留在屏幕顶部,直到手动将其关闭。

当设备解锁时,点击通知,或在设备锁定时,将通知滑动到侧面,关闭通知,将其从通知中心中删除,打开相应的应用程序,并显示相关信息。

在未锁定的设备上,向上滑动通知或让其消失将取消该通知,并可能将其从通知中心中删除。

使用3D Touch向通知施加压力,或者在未锁定的设备上向下滑动通知,以打开展开的详细视图。该视图是可自定义的,最多可包含四个用于执行操作的按钮。


# 设计出色的通知体验 #

1. 人们使通知能够快速更新,因此专注于提供有价值的信息。避免告诉别人打开您的应用,导航到特定的屏幕,点击特定的按钮以及执行其他在通知被取消后难以记住的任务。

2. 即使用户没有响应,也不要为同一件事发送多个通知。人们会在方便时参加通知。

3. 不要包含您的应用名称或图标。系统自动在每个通知的顶部显示此信息。

4. 当通知预览被隐藏时,提供描述性文本以供显示。基于用户的设置,可以隐藏通知预览以保护隐私。在这种情况下,仅显示您的应用程序图标和一般描述(“ 通知”为默认描述)。为了向用户提供足够的上下文,应提供简洁描述通知内容的自定义文本。

5. 提供声音以补充通知。当用户不看屏幕时,声音是吸引他们注意力的好方法。可以为此使用自定义声音或内置警报声音。如果您使用自定义声音,请确保它简短,独特且专业。请记住,人们可以选择禁用通知警报声音。还可以启用伴随声音的振动-必须手动启用,无法通过编程方式启用该功能。

6. 考虑提供详细视图。通知详细信息视图提供有关通知的更多信息,以及在不离开当前上下文的情况下立即采取行动以打开您应用。此视图应包含有用的信息,应可识别,并且感觉像是应用程序的自然扩展。可以包含照片,视频和其他内容,并且可以在显示时动态更新。

7. 提供直观,有益的行动。通知详细信息视图最多可以包含四个操作按钮。这些按钮应用于执行省时的常规任务,从而无需打开应用程序。请使用简短的标题名称,以清楚地描述操作结果。通知详细信息视图还可以显示一个屏幕键盘,用于收集采取操作所需的信息。

8. 避免提供破坏性行动。在通知详细信息视图中提供破坏性操作之前,请仔细考虑。如果必须提供它们,请确保人们有足够的背景信息,以避免意外的后果。以红色标识破坏性的动作。


# 徽章 #

- 使用徽章来补充通知,而不是表示关键信息。请记住,可以关闭应用程序的徽章。如果您的应用程序依靠徽章来传达重要信息,则可能会招致人们丢失信息的风险。

- 徽章仅用于通知目的。徽章不应用于显示其他类型的数字信息,例如空气质量,日期,股票价格或天气。

- 保持徽章最新。将徽标计数减少为零会从通知中心删除所有相关通知。


5、打印

在启用AirPrint的应用程序中查看可打印内容时,人们通常会在导航栏或工具栏中点击操作按钮,然后点击“打印”操作以显示打印机视图。该视图提供了可用打印机的列表以及任何可自定义的选项,例如份数和页面范围,并提供了一个启动打印的按钮。

- 使打印变得可发现。如果您的应用程序具有工具栏或导航栏,通过系统提供的操作按钮启用打印。如果没有工具栏或导航栏,请设计一个自定义打印按钮。

- 仅在可以打印时启用打印。如果屏幕上没有可打印的内容或没有可用的打印机,当有人点击“操作”按钮时,不要显示“打印”按钮。

- 提供增加价值的打印选项。


6、快速浏览

- 根据当前操作适当显示预览。在iPhone上,如果应用具有导航栏,预览后滑动即可回到原来的页面。在iPad上,如果应用没有自己的导航栏,在包含导航栏的全屏模式视图中打开预览。使用这两种方法,导航栏都包含用于退出“快速查看”的按钮,以及用于执行诸如共享和标记之类的操作的特定于预览的按钮。如果您的应用程序包含工具栏,则将在此处而不是在导航栏中显示任何特定于预览的按钮。


7、评分和评论

评分和评论可帮助人们在考虑是否试用您的应用时做出明智的决定。正面的评分和评论可能意味着您的应用会有更多下载,而客户的反馈可以使您深入了解实际使用情况,从而有助于指导未来的开发工作。

提供出色的整体体验是鼓励正面评价和评论的最佳方法,但是在适当的时候征求反馈也很重要。

1. 仅在用户证明与您的应用互动后才要求评级。例如,在完成游戏级别或生产力任务时提示用户。切勿在首次使用或登陆期间要求评级。留出足够的时间来形成意见。

2. 不要打扰用户,尤其是当他们执行时间敏感或压力大的任务时。

3. 重复的评级提示可能会令人不快,甚至会对用户对您的应用程序的看法产生负面影响。在评级请求之间至少间隔一两周,并且仅在用户证明与您的应用有更多互动后才再次提示。

# 系统评级和审查提示 #

该系统为应用程序请求评级和评论提供了一致,非侵入的方式。要使用此功能,您只需在应用程序的用户体验中确定需要反馈的地方。如果用户尚未提供反馈,则系统会显示一个应用内提示,要求进行评分和可选的书面评论。用户可以单击提供反馈或消除提示。系统会在365天内自动将提示的显示限制为每个应用程序显示三次。

- 首选系统提供的提示。以最小的影响吸引用户。

- 不要使用按钮或其他控件来请求反馈。

- 回应评论是与用户交流,解决疑虑并有可能提高应用程序评级的好方法。


8、屏幕截图

从iOS 11开始,截屏后,屏幕截图会以预览形式短暂出现在屏幕底部。用户可以向侧面滑动预览以将其关闭(如果用户什么都不做,则预览会在几秒钟后自动关闭),也可以点击预览以快速访问即时标记和共享工具。屏幕快照将保存到“照片”中的“屏幕快照”相册中。

- 截屏时,系统提供的截屏功能可提供足够的上下文和功能。自定义屏幕截图启动的界面更改和功能是重复的,不必要的,并且可能造成混淆。


9、TV App

您的应用程序可以与TV应用程序集成在一起,并且可以单点登录,从而为人们提供高度便利且一致的娱乐体验。

TV应用提供了对整个系统中喜爱的,最近播放的和推荐的电影和电视节目的全局访问。


# 开始和恢复播放 #

当用户启动应用内的内容播放时,电视应用会自动打开您的应用并向其发送通知。

1. 确保顺利过渡到您的应用。过渡到您的应用程序后,电视应用程序会逐渐变黑,并且不会显示应用程序的启动屏幕。在开始播放或恢复内容之前,应立即呈现自己的黑屏,以保持视觉过渡的连续性。

2. 立即显示预期的内容。用户希望所选内容一经转换到您的应用程序即可开始播放。从应用程序的黑屏直接跳转到内容。避免显示初始屏幕,详细屏幕,介绍性动画或任何其他花费较长时间才能到达内容的障碍。

3. 不要问用户是否要恢复播放。如果可以恢复播放,则应自动恢复而不提示确认。

4. 确保为正确的用户播放内容。如果您的应用程序支持多个用户配置文件,则TV应用程序可以在发出播放请求时指定一个配置文件。您的应用应该在开始播放之前自动切换到此配置文件。如果播放请求未指定配置文件,请在播放开始前要求用户选择一个配置文件,以便将来可以提供此信息。


# 载入内容 #

如果加载时间超过两秒钟,考虑显示一个黑色的加载屏幕,其中的进度指示器居中,周围没有内容。

1. 尽可能避免加载屏幕。如果内容快速加载,则不需要加载屏幕。

2. 尽快开始播放。如果需要加载屏幕,则只有在加载了足够的内容以开始播放之前,该屏幕才可见。继续在后台加载剩余内容。

3. 设计黑色加载屏幕。在过渡到播放内容的过程中可能会出现加载屏幕。它们应显示为黑色,以便与TV应用程序的从淡入黑功能融合在一起。

4. 最小化加载屏幕上的内容。如果必须在加载屏幕上包括商标或图像,请以最少的方式进行,并保持黑色背景并无缝移动以播放。


# 退出播放 #

用户退出播放后仍留在您的应用中,而不是返回到电视应用。这种体验不应导致用户迷失方向。

- 显示上下文相关的屏幕。退出播放时,显示用户刚才正在观看的内容的详细屏幕,并包括恢复播放的选项。如果没有详细信息屏幕,请显示一个菜单,其中包括用户刚刚正在观看的内容或应用程序的主菜单。

- 准备立即退出。收到播放通知后,请尽快准备退出屏幕,这样即使播放开始后立即退出,用户也可以看到退出屏幕。


# 单点登录 #

许多受欢迎的电视提供商都允许用户在系统级别登录其帐户,从而无需逐个进行身份验证。如果您的应用需要电视提供商认证,请使用此功能提供最有效的入门体验。

- 当用户在系统级别登录时,避免显示注销选项。如果您的应用程序必须包含退出选项,则调用它应提示用户导航至“设置”>“电视提供商”以退出其帐户。

- 切勿通过调整隐私控制来指示用户退出。“设置”>“隐私”中的电视提供商控件不是退出机制。通过这些设置,用户可以管理可以访问其电视提供商帐户的应用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • [转] 糖箔糊2014.09.23 文章索引 1.1 为iOS而设计(Designing for iOS) 1.1...
    镹壹阅读 2,398评论 0 31
  • 1.1 为iOS而设计(Designing for iOS) iOS 的革新关键词如下: 遵从 :UI能够更好地帮...
    iq小卡阅读 830评论 0 6
  • 产量减半——比特币价格复苏的关键催化剂 产量减半的设计初衷 众所周知,比特币与法定货币不同,它不受中央政府的监管,...
    justme2019阅读 180评论 0 0
  • 我也不知道怎么找到这本书的!看到一半发觉是励志书!让我惊讶!于是搜索作者,原来他是在美国与卡耐基齐名的励志大师!据...
    武陵清泉阅读 663评论 0 1
  • 曾经我也向往自由,向往游鱼版自由自在的生活。可现实总会深深的搓痛我,你想要的东西辣么多,你所要承担的责任辣么大,你...
    蓝波先森阅读 156评论 0 0