介绍
CAReplicatorLayer的目的是为了高效生成许多相似的图层。它会绘制一个或多个图层的子图层,并在每个复制体上应用不同的变换。只要脑洞足够大,效果就足够炫。
实践
在本期的demo中,我一共实现了5个效果。
1.音乐震动条
思路
- 用CALayer创建一个矩形条,作为base
- 用CAReplicatorLayer复制baseLayer。
- 设置动画,让他们长短发生变化。也许应该是:transform.scale.y。
|
|
代码很简单,也不复杂。不过需要注意的是:我尝试了很多动画方法。想能用CABasicAnimation尽量就不用CAKeyframeAnimation。不过最后以失败告终。不知道是真的不行,还是技术不行。有大神知道为什么请麻烦告诉一下。学习学习。
2.三角形移动的等待指示器
思路
- 用CALayer创建一个圆形,作为base
- 用CAReplicatorLayer复制3个baseLayer。
- 设置动画,让他们发生位移变化。会改变什么属性呢?我们先猜一猜。
|
|
这个动画我实现了很久,总是达不到预期的效果。最后还是看了教程照猫画虎才实现的。不过明白了一些就是:layer的大小,以及运动的距离,都会影响动画的效果。所以动画需要计算来设计。
3.正方形移动的等待指示器
思路
- 用CALayer创建一个圆形,作为base
- 用CAReplicatorLayer横向复制5个baseLayer,然后把CAReplicatorLayer作为baseLayer再纵向复制5个。这样就有了一个正方形
- 设置动画,让他们由大变小。
|
|
这个动画唯一需要注意的地方就是instanceDelay属性。
4.圆形移动的等待指示器
思路
- 用CALayer创建一个圆形,作为base,并设置他围绕中心点旋转。
- 用CAReplicatorLayer横向复制10个baseLayer,并设置为圆形。
- 设置动画,让他们由大变小。你们的思路跟我一样了么?
|
|
这个动画也不难,唯一需要注意的就是属性的类型。切记切记。
5.倒影的实现
思路
- 创建一个CALayer,并设置他的contents属性,显示图片。作为base。当然你也可以使用UIImageView。个人喜好吧。
- 用CAReplicatorLayer横向复制2个baseLayer。将复制的图层沿着x轴翻转。就能实现倒影效果了,为了锦上添花,我们还应该设置他的透明度以及颜色值变化。不多说了,太简单,直接上代码。
|
|
总结
- 有几个属性是重点:instanceDelay,instanceCount,instanceTransform,划重点,必考。通过设置不同的值,可以创造很多不同效果的动画。
- 很多属性请注意他们的类型。比如时间,一定不能是整型的。不要犯我的低级错误。
- 创建完baseLayer以后,一定要将它addSubLayer到CAReplicatorLayer中,否则一切都是空谈。
- 耐心,耐心,耐心。
以上都是自己学习时写的demo。pu出来方便大家学习。如果有错误的地方,请帮忙指正。谢谢啦。也许这是新年的最后一篇,祝自己明年会事事顺利。如果步步高升也是极好的。