这是一篇基于CAReplicatorLayer动画的文章,原文《The power of CAReplicatorLayer》是用swift实现的,看到原作者的动画,真的很棒,学习后用Objective-C又实现了一遍,在这里分享给大家。原文地址。
为了方便调用,我把相关方法写成了类方法。调用每个方法会返回一个CAReplicatorLayer的实例,然后把该实例添加到目标试图的layer上即可。
首先是公开的外部接口,具体如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
#import <Foundation/Foundation.h> @interface WHAnimation : NSObject + (CALayer *)replicatorLayer_Circle; + (CALayer *)replicatorLayer_Wave; + (CALayer *)replicatorLayer_Triangle; + (CALayer *)replicatorLayer_Grid; @end |
接下来是内部实现,因为会用到一些CAAnimationGroup,子动画我都分开写了,所以篇幅不少,具体如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
#import "WHAnimation.h" @implementation WHAnimation + (CALayer *)replicatorLayer_Circle{ CAShapeLayer *shape = [CAShapeLayer layer]; shape.frame = CGRectMake(0, 0, 80, 80); shape.path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 80, 80)].CGPath; shape.fillColor = [UIColor redColor].CGColor; shape.opacity = 0.0; CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; animationGroup.animations = @[[WHAnimation alphaAnimation],[WHAnimation scaleAnimation]]; animationGroup="crayon-sy">],[WHAnimation scaleAnimation]]; animationGroup。
为了方便调用,我把相关方法写成了类方法。调用每个方法会返回一个CAReplicatorLayer的实例,然后把该实例添加到目标试图的layer上即可。 首先是公开的外部接口,具体如下:
接下来是内部实现,因为会用到一些CAAnimationGroup,子动画我都分开写了,所以篇幅不少,具体如下:
|