Framer之状态 | 如何动态展示一个logo的演变过程

之前的Framer教程都是按照个人喜好去写的,没有按照难易程度形成系列。为了让大家能更好地入门,我准备由易到难写一个系列教程,尽量保持在每周一篇的频率。

导读:状态和图层、动画一样也是一个对象,它包含了一个图层的位置、颜色、大小等信息。状态可以看做是动画的节点,而动画可以看做不同状态间的过渡。我们可以给一个图层定义不同的状态,当它在不同状态之间变换时就形成了动画。图层、动画和状态是Framer的三个基本要素。

六个月前,instagram更换了新logo。

这里我们不讨论这个变化的好坏,我想教大家的是如何用Framer动态演示这个logo的变换过程。它的思路很简单,就是通过Framer来绘制这些logo的元素,再将它们的一些元素一一对应,就可以通过状态之间的转换来展示动态变化。看图理解一下:

在教程之前,先简单介绍一下状态。状态可以看做动画的节点,图层在不同状态下会有不同的外观样式。

状态的定义包含了一系列属性和属性值,比如给图层lens定义一个新状态stateA,就可以这样写。下面的一系列属性和属性值对定义了它在stateA下所展现的样子。

Framer提供了三种切换状态的方法:

在这个教程里我们通过Framer来绘制instagram的logo,再将新旧logo的元素进行对应,我大概画了一下它们之间的对应关系。左边这个logo元素有点多,我们可以不用完全照着画出来,有些小细节可以不画。不能对应的部分,可以在变化过程中直接隐去,比如那个棕色的色块和彩虹条。右边的渐变背景用代码实现有点复杂,我们就直接做一张图贴上去。

我们先绘制新旧logo的背景,旧logo的背景是浅灰色的圆角方块,而新logo则是一个渐变色方块。我们把新logo背景放在旧logo背景下面,演变时只需要将旧logo背景逐渐隐去就可以显示出新logo的渐变色背景。

我们给新logo背景命名为newBg,而旧logo背景命名为instagram。instagram将会作为所有元素的父图层,方便它们一起移动。再通过 center( ) 方法将它们俩放置在屏幕正中央。需要注意的是instagram有一个特别的 clip 属性被设置为 true ,表示它会自动裁切超出区域部分。当它的某个子图层太大以至于超出这个圆角方块时超出部分将不会显示。

接下来绘制棕色的色块,并使用循环绘制出彩虹条。我们使用两个数组分别来存储四个彩虹条和四个彩虹色,使用 rainbow = [ ] 来表示 rainbow 是一个数组,为后面存储四个彩虹条图层做准备;而 rainbowColors 表示四个颜色,直接写在中括号中。 for i in [0..3] 表示i从0开始,循环4次到i变成3,i每次加1时通过 rainbow[i] = new Layer 来新建一个图层,并将该图层存储在数组 rainbow 中。比如循环第一遍时i就等于0,那么 rainbow[0] 就存储了第一个彩虹条图层。

我们通过观察彩虹条发现,他们的y坐标一致,x坐标是变的,因此x坐标可以通过i来进行变化, 8+i*8 表示每当i加1时,x坐标就要增加8,也就是它的宽度。这样四个彩虹条就可以并排排列在一起了。同时 backgroundColor 通过对应的 rainbowColors[i] 就可以让四个条的颜色不一致。

接着画出三个环,也就是旧logo上的几个镜头。调整他它们的背景颜色、圆角半径、描边宽度等,使其最终呈现为旧logo的样子。

接着给每一个图层添加新状态 whatGhost ,让它们在该状态下表现出新logo的样子。比如将 instagram 的背景变成 transparent (透明), outerRing 变成方形等等。

最后,给 instagram 添加一个点击事件,使它被点击后所有元素在默认状态和 whatGhost 状态之间循环往复,就可以看到我们想要的效果啦。

最后我们总结一下Framer状态的几个要点:

1、状态可以看做动画的节点
2、一个新状态对应图层的新的样式外观
3、使用animate( )动画式切换状态,使用stateSwitch( )直接切换,使用stateCycle( )在状态间循环往复

点击这里,获取源文件。

转载请注明来自leadream的简书,不注明视为抄袭,追究到底

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

推荐阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,091评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,460评论 6 30
  • 女生经常有这样那样的各种问题,有些宝宝脸脸黄想要去黄,还有美白 、月经不调 、睡眠减肥、增肥、便秘等等。其实这些问...
    小耳朵颖阅读 1,480评论 0 1
  • ~ 1、 这个世界上最大的舞台是政治舞台,最跌宕起伏的戏剧是政治戏剧。 所有的美丽未必都在这个舞台上亮过相,但所有...
    剑圣喵大师阅读 1,166评论 5 15
  • 转到https://blog.gokit.info/post/issues-tracker/
    llitfk_DockOne阅读 920评论 0 0