人们通常不太关心对导航的体验,除非你的导航不能满足他的需求
你要做的就是通过导航来实现app的structure和purpose,不用对导航本身作出太多的关注,你只需确保你的导航能够实现你的目的
通常来说,有三种风格的导航,他们中的每一个都可用于某种特定的app结构
hierarchical
Flat
content or experience driven
在一个hierarchical 的app中,user 通过在屏幕上作出选择来导航直至达到他们的目的
为了导航到另外一个目的地,用户需要不断作出选择返回到或者从头开始。
settings和mail是用hierarchical导航的好的例子。
在一个具有扁平信息结构的app中,用户能够直接从一个main 类导航到另外一个,
所有的main categories在屏幕上都可以看到的,music 和app store就是运用flat 导航的例子
在一个app中用content or experience driven information structure一点也不足为奇,通过content or experience来导航,
比如在一本书中,用户从一页到另外一页,或者在目录中直接选择某一页,在game中通常通过经验来导航,就是你要导航到某个task,你需要达到一定的经验值,否则你只能做其他的task来获取足够的经验值才能解锁这个任务
通常在一个app中需要结合不同风格的导航来构筑app的架构
Users should always know where they are in your app and how to get to their next destination.
用户应该知道他目前处于app的那个位置,以及怎样导航到下一个位置
无论你的app用什么样的导航风格,你都应该保证导航获取content的路径是符合逻辑的,可预测的和容易的
UIkit定义了许多标准的UI elements,这些UI elements可以帮助你容易的实现hierarchical and flat 导航风格的app
另外还有一些可以帮你在book style and media viewing app中实现content导航的UI elements。
通常在game中用一些自定义的UI elements 作为experience navagation
Use a navigation bar to give users an easy way to traverse a hierarchy of data.
用一个navigation bar给用户提供一种容易的方式在hierarchy data之间进行来回移动
Navigation bar可以把用户当前的位置展示给用户,返回按钮使得更加容易的返回到前一个scene
Use a tab bar to display several peer categories of content or functionality
用tab bar 去显示具有相同内容或功能的elements
用tab bar 去实现flat information architecture 是一种不错的选择,他在屏幕上一直存在使得他可以不用管当前处在app中的那个位置都可以非常容易的实现在类别之间的切换
Use a page control when each app screen represents an individual instance of the same type of item or page
当每一个app screen都是一个单独的具有相同类型的item的一个实例时,你需要用a page control.
一个page control 向用户展示出有多少个items或者pages是可以用的,和哪一个是当前显示出来的item
In general, it’s best to give users one path to each screen
如果你先要在一个screen上呈现出多个content,你需要temporary view,如modal view,alert,action sheet
UIKit 也提供下面两类的controls:
segmented controls:
segmented controls在屏幕上向用户展示内容的不同类别和方面,不支持导航到另外的screen
toolbar:尽管toolbar看起来与navigation bar及tab bar 看起来类似,但toolbar不能实现导航
toolbar 让user controls根据当前屏幕的内容来行动