第 15 章:圆形菜单

原文链接
作者:C4 开源项目
译者:Crystal Sun
全部章节请关注此文集C4教程翻译
校对后的内容请看这里

在应用的中心设计一个持续的菜单,Jake的这个想法非常漂亮,不过实现起来也非常难,特别是还要计算动画时间,实现流畅的动画效果。首先需要分解这个动画,分解成一个一个的视觉组件,然后分解每个组件的动画效果,尤其是打开关闭时的动画效果,接着,我们处理一下手势、targets、actions,打磨一下 UI 里的 label 显示效果。

概念定义

概念非常简单:屏幕中心有一个居中的图标,点击后转换成一个圆形的菜单,里面有12个星座图标按钮,点击某个星座按钮后,菜单又回到一开始的样子:屏幕中心一个图标按钮。非常明了。

菜单开始时的状态

为了实现这样的效果,我们会分别处理每个组件的动画,然后把各个组件组合在一起,形成最后的效果。

指环

菜单里的主要视觉效果就是出现的一系列的指环,在快要结束的时候,会出现两个指环和一些点,打开状态下实际上有七个指环:一个厚的,五个瘦的,一个带有破折号。最上面这个,有十一个分割线,把十二个图标分割开来。在这一部分我们会决定基本的动画,看起来更像是一个菜单,我们然后可以创建剩下的交互效果,完成点击效果。

图标

图标是整个应用的核心部分,每个图标有不同的位置。这些图标不仅仅是看着好看,动画效果也让整个菜单看起来像是活的:在关闭状态下,这些图标看起来像是一些点,在打开状态时,会展现完整的样子,从关闭到打开的过程,我们需要一个非常棒的移动过程,通过动画提现这个展现的过程。

选择器

菜单出现后,当用户点击某个图标按钮时,我们希望该按钮的背景高亮,表明这个按钮被选中了。有两个方法可以实现:我们会生成十二个 shapes,更改它们的填充色;或者,我们创建一个面具 shape,旋转它。不管那种方法,我们都需要考虑用户使用那种手势来出发点击。

手势

正确的手势会对我们应用的风格产生非常大的影响。我们希望应用里的交互都简单明了,然后我们也想让人们看到一些新奇的手势功能,我们还要想办法解决打开状态、选择图标和关闭状态之间的平衡,在这个过程中不能有太多的手势和动作。

UI

为了给菜单和应用增加更多内容,我们增加一个标题 label,显示当前选中的图标,一个 info 按钮,能够打开信息面板,一个说明 label,仅出现在用户第一次打开应用,还没点击菜单时(比如,如果用户不知道如何使用菜单,该 label 显示使用说明)。最后,我们还要增加一点阴影效果,在打开菜单时阴影仅仅消失,在阴影的对比下,在弹出菜单时,将菜单和背景区分开来。同样的,我们给上面的这些东西增加一些小技巧。

动画

所有的状态都要遵循下列动画效果:

  1. 所有的动画都是从中心向外扩展,看起来像是从一条粗线里出来的。
  2. 分割线的动画效果是随机的。
  3. 图标开始是一个点,然后慢慢向外扩大直到到达最后的位置,从点扩大成最终的外形。
  4. 转换最后出现 info 按钮
  5. 在转换过程中,阴影渐渐消失。
  6. 选中一个图标后,显示高亮效果。
  7. 用户关闭菜单,或者选择 info 按钮后,所有的动画反向进行。

分解

把所有的工作分解成下列步骤,每个步骤单独开发,最后将所有的步骤组合在一起:

  1. 创建 MenuRings 类,处理菜单的基本外形
  2. 创建 MenuIcons 类,处理图标的呈现和动画效果
  3. 创建 MenuSelector 类,处理手势、选择器、info 按钮和菜单里的 label
  4. 创建 MenuShadow 类,处理阴影的动画效果
  5. 创建 Menu 类,把上述的效果组合在一起

(糖馅饼??!!)下一节继续。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权。

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

推荐阅读更多精彩内容