做道题:[不定项选择题]

OS中导航设计模式有几种?

A.平铺导航

B.标签导航

C.树形导航

D.模态视图导航

正确答案:A B C

讲解:

导航始终是产品设计的重头戏,往往产品设计中90%的事情就是在做导航。在iphone中预置了3种可以直接使用的导航模式:平铺列表、标签页、树状结构,每种模式都配有不同的工具栏和控件。三种导航模式可以独立使用也可以混搭,让你的用户可以优雅的穿行与你的应用之中。

(图片来源:Tapworthy

平铺列表

这种方式主要用于只有一个主屏的简单应用。这种方式很适合浏览并发现类的应用,因为他的信息架构简单到极致,没有信息层级也没有组织结构,就像一叠卡片一样。主要信息在卡片的“正面”展示,“反面”就是简单的设置,向左右滑动即可翻页,典型应用比如内置的天气应用。

当然,平铺列表式导航也可以根据你的需要随意的添加、删除卡片。从某种意义上讲,他的扩展性优于标签页式导航,因为标签页模式中类目与顺序都是固定的。

在平铺列表模式的页面底部都添加了页面分页控件,其表现为一排小圆点。小圆点的数量代表了平铺的页面的数量,而高亮的小点则是另外一种形式的导航, 他显示了当前所在页面的位置。同时,页面分页控件也是可以操作的,点击控件的左半部分或者右半部分或者直接左右滑动可以切换上一个/下一个页面,不过,页 面分页控件每次只能翻一页,而不是直接跳转到某一页去。一般而言,页面分页以不超过10个为最优,超过了20个就会溢出屏幕了….

另外,为了更好的表达”卡片堆“的隐喻,最好不要在平铺模式下设计多个不同的滑动手势。在触摸屏上大家都能在单一方向上进行滚屏,但是2个方向的滚屏需要更好的精度,这种做法有些挑战人机工程学了。

标签页

在ios上标签页一般依附在屏幕的底部,标签栏将应用功能一一归类,点击一个标签就会跳转到相应的页面上,然后该标签以高亮的形式表明你当前的位置。在标签页模式下,每个标签对应的页面都可以有自己的界面风格和特定的内容与功能,看起来就像是在运行一个独立的应用。

标签栏的高度是49像素,每个按钮都会包含一个文本标签和图标,按钮的宽度取决于放置按钮的数量,标签栏限制最多可以放5个图标,超过之后会在第5个按钮的位置出现”更多“的标签。

当然,标签栏以49像素的高度存在其实占用了不少的屏幕空间,所以在某些情况下可以适当的去掉标签栏,典型的就是图书类应用的全屏阅读模式。

树状结构

这种模式简单来说就是将层级信息分类到一棵倒置的树枝上。这种导航模式很适合列表,点击列表中的一项可以看到新的列表,列表可以再进行分拆,直到进入项目的详情。树状结构的一个变形就是表格视图,也就是我们常说的”9宫格”,这种变形更加的图形化。

当然,根据信息的不同,树状模式中的标签也可以进行分组。一个树状模式可以分为若干的组,每个组可以包含任意数量的行数。

3类导航模式的比较

导航模式的组合应用

平铺列表、标签页、树状结构3种导航模式并不是互斥的,完全可以在一个应用里对他们进行混搭。这种混搭可以帮助我们克服单个导航模式的短处。

模态视图

我们经常会遇到在某个路径中滑出一个单屏、进行编辑、查看信息、操作界面的上的内容的情况发生。这是一种应用行为的特定形态,一般带有流程的界面变 更的情况发生,比如一张页面临时取代了整个应用程序的显示屏,我们称这种处理方式为“模态视图”。默认情况下,模式视图从屏幕底部边缘滑上来切一半覆盖了 当前整个屏幕,模态视图完成和程序主功能有关系的独立任务,尤其适合于主功能界面中欠缺的多级子任务。这种操作会暂时绕开应用的正常操作。

模态视图常常被用来编辑或添加内容,当你需要的时候模态视图一般从屏幕底部滑出而后遮盖先前的页面,当你完成任务后滑出的页面也会相应的缩回去,然 后可以继续之前的流程。有些控件和界面元素只在次要任务中被偶尔用到,模态视图很好的把他们暂时隐藏了,并且当需要的时候出现,有效的节约了屏幕空间。

模态视图有点像是导航中的死胡同,为了能够让用户也可以同样方便的回到正常的流程中去,模态视图除了正常的操作之外一般还有加上一个“完成”按钮,或者“取消”按钮。

最后,一个移动产品设计的礼仪问题

当用户从你应用的一个地方跳转到另外一个地方再原路返回来的时候,应用应该主动恢复到他上次离开的样子(千万不要重新加载,你懂的!)。这玩意学名叫状态恢复,这种保持不变的礼仪对移动产品的体验来说相当重要!

本文为转载内容,仅作为学习使用!如果转载请注明原文地址!

原文地址: http://www.ikent.me/blog/3798

移动产品设计之ios系统的导航的更多相关文章

  1. iOS系统中导航栏的转场解决方案与最佳实践

    背景 目前,开源社区和业界内已经存在一些 iOS 导航栏转场的解决方案,但对于历史包袱沉重的美团 App 而言,这些解决方案并不完美.有的方案不能满足复杂的页面跳转场景,有的方案迁移成本较大,为此我们 ...

  2. iOS 系统根据导航栏和状态栏自动修改布局

    问题 条件:1.有一个全屏大小的带导航的controller 2.隐藏导航栏,最顶上还会留出状态栏的位置,而不是全屏显示 解决方法 self.automaticallyAdjustsScrollVie ...

  3. 模拟iOS系统原生导航条隐藏或显示动画

    借UIView动画,使更改导航条的hidden属性这一过程动起来.悦德财富:https://yuedecaifu.com 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  4. 有关iOS系统中调用相机设备实现二维码扫描功能的注意点(3/3)

    今天我们接着聊聊iOS系统实现二维码扫描的其他注意点. 大家还记得前面我们用到的输出数据的类对象吗?AVCaptureMetadataOutput,就是它!如果我们需要实现目前主流APP扫描二维码的功 ...

  5. iOS 系统架构

    https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/ ...

  6. 超强教程:如何搭建一个 iOS 系统的视频直播 App?

    现今,直播市场热火朝天,不少人喜欢在手机端安装各类直播 App,便于随时随地观看直播或者自己当主播.作为开发者来说,搭建一个稳定性强.延迟率低.可用性强的直播平台,需要考虑到部署视频源.搭建聊天室.优 ...

  7. iOS开发UINavigation——导航控制器UINavigationController

    iOS开发UINavigation系列一——导航栏UINavigtionBar摘要iOS中的导航条可以附着于导航控制器之中使用,也可以在controller中单独使用,这篇博客,主要讨论有关导航栏的使 ...

  8. 在MacOS和iOS系统中使用OpenCV

    在MacOS和iOS系统中使用OpenCV 前言 OpenCV 是一个开源的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法. 最近试着在 MacOS 和 iOS 上使用 OpenCV ...

  9. 深入了解ios系统机制

    1.什么叫ios?        ios一般指ios(Apple公司的移动操作系统) .        苹果iOS是由苹果公司开发的移动操作系统.苹果公司最早于2007年1月9日的Macworld大会 ...

随机推荐

  1. 【OpenJ_Bailian - 2797】最短前缀(贪心)

    最短前缀 Descriptions: 一个字符串的前缀是从该字符串的第一个字符起始的一个子串.例如 "carbon"的字串是: "c", "ca&qu ...

  2. builder模式的新学习

    builder模式的新学习 静态工厂和构造器有个共同的局限性:他们不能很好的扩展到大量的可选参数.大多数产品在牧歌可选与中都会有非零的值 对于这种类,应该使用哪种构造器或者静态方法来进行编写?程序员一 ...

  3. Python学习 Part2:深入Python函数定义

    在Python中,可以定义包含若干参数的函数,这里有几种可用的形式,也可以混合使用: 1. 默认参数 最常用的一种形式是为一个或多个参数指定默认值. >>> def ask_ok(p ...

  4. XML标准和RFC官方文档

  5. [LOJ#10042] 收集雪花

    题目链接: 点我 题目分析: 双指针扫描可以保证在\(O(n)\)的时间复杂度内处理这道题.另外,虽然这个题标签是\(hash\),但是字符串\(hash\)是可以卡掉的,所以建议直接离散化. 维护两 ...

  6. python flask学习(3)

    这次主要学习web表单.学了下,很像是Django的form表单验证.不过有许多的不同.可以说是功能更加碎块化.Django的验证方式是很固定和严谨的,风格完全不同. 尽管Flask的请求对象提供的对 ...

  7. javascript ES 6 class 详解

    Introduction 上篇文章大致介绍了一些ES6的特性,以及如何在低版本浏览器中使用它们.本文是对class的详解. 译自Axel Rauschmayer的Classes in ECMAScri ...

  8. leetcode542 01 Matrix

    思路: 多个起点的bfs. 实现: class Solution { public: vector<vector<int>> updateMatrix(vector<ve ...

  9. MFC命令行及CCommandLineInfo类

    获取命令行的方法: 1.GetCommandLine() 获取输入的所有信息,包括程序所在路径及参数 2.AfxGetApp()->m_lpCmdLine 只包含参数 一般情况下,获取到命令行后 ...

  10. iOS之创建CocoaPods公有库教程

    简介 在开发过程中,经常会使用到第三框架,我们通过一个pod install命令,很方便的就将第三方框架加到我们自己的项目中. 如果我们也想将自己写的组件或库开源出去,让别人也可以通过pod inst ...