@产品iOS开发之常用技术点产品

转载【如何构建高复用性的交互组件库】

2019-01-02  本文已影响7人  视觉笔记糕小糕

前言

本篇文章来源于 Qinsman的个人博客,博客地址为 http://qinsman.com/1701_idkit/
由于博客图片阶段性无法打开查看,自己之前有保存,已获得作者同意,特意分享出来供大家参考学习
也感谢 Qinsman的分享总结

这是一篇非常棒关于如何使用组件,如何命名嵌套组件的指导手册,对于模块化设计,组件思维有很大帮助指导,期望大家能够学以致用,不仅走马观花,实际用到自己项目中去。

image

引子

有一天,当你几乎完成了一个项目全套的交互设计稿后。

PM:「那个……把底栏第二和第三个Tab对调一下位置吧。」

你吓得坐到了地上:「为什么!不是一个月前评审时就定好的吗?」

PM叹了口气,用八百字痛陈了客户的压力和他的歉意。

你哭:「有200多个页面要改,明天评审还来得及吗?」

PM没有说话,只是同情地拍了拍你的肩膀……

——而如果你的导航栏是通过组件统一搭建的,完成这一改动只需要1秒。

image

1 什么是组件库

1.1 组件库的概念

组件库就是界面设计常用控件或元素的集合,从某种意义上说,交互设计线框图的组件库比视觉设计阶段的UI组件库价值更高。UI设计阶段,不同产品、不同项目的常用组件即使有共通之处,也一定是不完全相同的。而在交互设计的线框图阶段,一个优秀的组件库可以同时在许多项目中发光发热。

一个好的组件库,衡量标准主要包括灵活性、复用性、全面性。灵活性指一个组件的字段、icon、配色都应该可以灵活改写,以应对多样化的需求。复用性指对于通用组件,应当是可以在不同项目间复用的。全面性则指一套组件库应当覆盖尽可能多的常用元素。

组件化的初衷并非提高一致性、利于团队合作这些高大上的目的,而是人类进步的第一生产力——「懒」。消灭重复劳动是提高效率的主要途径,勤劳如小蜜蜂的设计师也不例外,那么组件化就是无论交互还是UI设计中我们不得不思考的问题。

虽然之前在回答一些新人的问题时,总是强调大家不要过分关注工具,对交互设计师而言,业务目标、流程和信息架构上的思考才是我们的核心价值所在。但这不代表工具就不需要思考和积累,一把更锋利的工具才能帮助我们把有限的时间和精力放在上面所说的核心思考上,而不是沦为埋头画图的线框仔。

因此,在猴年的最后一篇工作小结中,我想和大家一起聊聊交互设计组件库的问题。

1.2 复用性:组件库的意义

上面说到组件化是源于「懒」,并不是说组件化的作用仅限于简化重复操作。除了提高设计师个人的设计效率这一显而易见的好处之外,在交互设计阶段对常见的元素控件进行组件化,还有很多更深层次的意义:

  1. 一致性「从娃娃抓起」:从交互稿阶段开始,就让整个项目的产出物具有高度的一致性,使用同一组件库画的每个顶栏、每个列表、每个弹框都是遵循同一规则的。
  2. 与视觉设计无缝衔接:Sketch为交互设计和视觉设计阶段的无缝衔接提供了最好的平台,交互组件库可以直接交付视觉设计师进行视觉设计,形成真正的UI组件库(UI Kit)。
  3. 有助于形成设计规范:当UI组件库形成后,「设计规范的积淀」——这个贯穿交互和UI设计管理工作中的老大难问题,就已经解决了一大半了,经过评审确认的UI组件库可以直接作为视觉设计规范的一部分。
  4. 利于团队合作:无论是交互设计组件库还是UI组件库,经过整理和完善,在项目或者团队中推行开来,对项目内,或者不同项目间设计成果的一致性、合作效率都大有裨益,也有助于让整个品牌形成有效的辨识度。
image

既然组件化有这么多的好处,哪些元素可以进行组件化呢?其实很简单,凡是你觉得已经重复画了很多次的元素,不同场景下都会用到的元素,都可以考虑将其单独拿出来进行组件化。

1.3 灵活性:「Symbol套Symbol」

Sketch 41的一个让设计效率产生质变的更新就是Symbol可以内嵌Symbol了,尺寸相同的符号可以在Symbol Override的下拉列表中直接选择切换——想必大家已经等这个功能很久了。

有了「Symbol套Symbol」的功能后,在组件化时进行合理的拆分和嵌套,可以让你做出一个很”聪明“的Symbol——可以帮你「以一敌十」的那种。

image

虽然在第一次建立Symbol时,需要仔细考虑怎样的拆分和嵌套是最有利于设计效率的,也许会觉得太费脑子,还不如直接画多个Symbol方便。但当一个通用性很强的Symbol通过各种内嵌Symbol组合而成后,毫不夸张地说,你会发现它替代的是以往成十上百个Symbol的功能。

而当你为常用的控件制作并积累了许多这些高通用性的Symbol后,一套复用性极佳的组件库库逐渐积淀成型后,你一定会惊叹于把一个方案构想呈现在线框图上原来可以这么快。

1.4 全面性:循序渐进的积累过程

在积累一个个的组件,逐渐形成组件库的过程中,不要想一下子做得非常全面。组件库的积累是一个不断在项目中补充、维护和更新的过程。而且,即使一个资深的设计师经过几年的工作也很难说能积累出绝对「全面」的组件库,每个项目都有各自的特色,一个能帮我们解决70%问题的组件库已经算得上是复用性很棒的了。

同时,Sketch的Symbol可以通过命名中的「/」符号自动形成目录结构,这有助于使用组件库的设计师快速找到想要的组件,也有助于制作或维护组件库的人随时审视一个类型的组件是否有重复或者不完善的情况。

image

1.5 让我们开始吧

本文将主要介绍如何构建一套具有复用性的组件库,即侧重「库」的层面而不是「个体」的层面——会讲的是组件库应该涵盖哪些类型的元素、每类元素在组件化时要考虑哪些方面、有哪些Tips需要注意,而不是一篇具体如何在Sketch中进行组件化的教程——当然,如果有朋友对这个教程有兴趣的话,后面有时间时我会考虑写一写。

因此,有Sketch使用基础的同学阅读本文应该会更明白我在说什么,也更明白做出各种拆分的原因。但在组件库中需要涵盖的组件类型和拆分方式上,希望这篇文章对使用Axure、OG、AI、ID等工具设计交互稿的同学同样有用:)

2 组件库的内容

再优秀的组件库也没法「一招鲜吃遍天」,何况Symbol数目过多会影响Sketch的流畅度。因此,一个全面的设计师或者一个优秀的设计团队,需要针对不同平台和不同的产品类型准备不同的组件库。

在准备针对某一产品类型的组件库时,该类型的产品中那些口碑最好的竞品,在设计规范方面自然是我们最宝贵的学习资源。例如下面这套组件库的积累过程中,除了学习和参考iOS平台的原生设计规范外,也部分参考了IM类的经典产品——微信的设计规范。

下面,将基于我在实际项目中浅薄的个人经验,以其中一个iOS平台下、适用于IM或内容性平台APP的组件库作为例子,逐一介绍我认为比较常见和重要、也比较适合进行组件化的12类组件。

  1. 顶部导航栏(含状态栏)
  2. 底栏
  3. 键盘
  4. 表单
  5. 按钮
  6. 会话
  7. 弹框
  8. Toast
  9. 上拉菜单(ActionSheet)
  10. 发布
  11. 内容
  12. Icon

2.1 顶部导航栏(含状态栏)

image

2.2. 底栏

image

2.3. 键盘

搜索键盘(Search)、小数键盘(DecimalPad)、推特键盘(Twitter)、文本数字键盘(NamePhonePad,特殊在于次键盘,主键盘与默认键盘相同)。

image

2.4 表单

image

2.5 按钮

image

2.6 会话

image

2.7 弹框

image

2.8 Toast

image

2.9 上拉菜单(ActionSheet)

image

2.10 发布

image

2.11 内容

image

2.12 Icon

image

3 示例:用组件库设计页面

最后,基于第二节示例中的组件库,简单地举几个通过组件绘制页面的小例子吧。页面内容本身不用细看,只是作为简单的示例罢了。

以下界面的所有设计都是用上面介绍的组件完成的。组件中所有文本都可以直接改写成设计中需要的内容,内嵌的Symbol也可以通过下拉列表方便地切换,更是大大提高了组件的使用效率。

  1. 「联系人」页

顶栏、底栏组件使用示例

image
  1. 「我的收藏」页

表单组件使用示例

image
  1. 「设置」页

弹框组件使用示例

image
  1. 「发现」页

发布组件使用示例

image
  1. 会话页

会话组件使用示例

image
上一篇 下一篇

猜你喜欢

热点阅读