iOS动画指南 – 3.Layer Animations的进阶使用

533 查看

11924285-ab8ed0935551c26e

本篇预备知识

  • 这一系列是讲iOS开发中动画的使用,所以得基本熟悉iOS开发.
  • 代码都是基于swift的,所以也得了解swift啊.
  • 这一篇是在前一篇的基础上写的,所以得知道Layer Animations的基本使用吧!

概述

上一篇iOS动画指南 – 2.Layer Animations的基本使用中介绍了Layer Animations的一些基本使用,这一篇我们通过几个小的例子深入了解Layer Animations的用法,所以相比上篇,这篇无论是从篇幅还是连贯性都会有点大,大家准备上车吧.

文章大纲

  1. 可以在多个值之间变幻的CAKeyframeAnimation.
  2. 可以画出各种形状的CAShapeLayer.
    12924285-e624513fd1a4a182
    DOG VS FOX
  3. 可以给文字添加效果的CAGradientLayer.
    13924285-54d70fb7e0973da1
    滑动解锁效果
  4. 有轨迹的下拉刷新.
    14924285-4dec2965165560b4
    模拟下拉刷新
  5. 可以无限复制的CAReplicatorLayer.
    15924285-2819cac250bb2dfa
    CAReplicatorLayer

1. CAKeyframeAnimation

开发中情况多种多样,从一个值到另一个值的fromValue和toValue属性并不能高效的满足开发需要,比如我们要将一个view一次经过三个点呢?难道分为两次去做,那太麻烦了.对的,可以用CAKeyframeAnimation去实现,CAKeyframeAnimation有个属性values是个数组完美替代了fromValue,toValue,我们可以把三个点放进values数组,解决问题.

16924285-f1e10cd1b58e3861

或者我们可以做一下view的左右晃动,不添加在上面位移基础上,单独去实现:

17924285-1d6b9f9b6df191f8

2. CAShapeLayer

使用CAShapeLayer可以绘制各种图形.
比如用来画圆:

18924285-161cf57e5703c5c3

接下来让我们来看下:

19924285-e624513fd1a4a182
DOG VS FOX

由于git图片是循环播放的,所以很难分辨动画的开始和结束,动画的开始其实是这样的:

20924285-464bb9e7493ce612

这是AvatarView的层级:

21924285-aeff8d6b636d3781
  • photoLayer : 是用来放置图片的.
  • circleLayer: 是用来绘制圆形的.
  • maskLayer: 是用来裁剪图片的.
  • label: 用于设置名字.

让我们来分析下步骤:

  1. 设置两张图片的圆角
  2. 两张图片向中间移动,完成后将图片变成方角
  3. 在两张图片在中间的时候,将两张图片做一个椭圆的碰撞效果
  4. 后退,图片返回到开始的位置,完成后执行步骤1

实现:
我们对控件做了封装,具体看源码.
1 . 在AvatarView中的didMoveToWindow方法中将新建好的几个属性添加进去