iOS CAAnimationGroup

作者: 2d899c5242bd | 来源:发表于2016-01-31 17:29 被阅读1944次
小动画
1.画一个❤️图案
CAShapeLayer *shapelayer = [CAShapeLayer layer];
[layer addSublayer:shapelayer];
shapelayer.fillColor = [UIColor redColor].CGColor;
shapelayer.lineWidth = 10;
        
UIBezierPath *path = [ViewController bezierHeartShapePathWithWidth:80 atPoint:CGPointMake(50, 50)];
        shapelayer.path = path.CGPath;
        shapelayer.strokeColor = [UIColor redColor].CGColor;

+ (UIBezierPath *)bezierHeartShapePathWithWidth:(CGFloat)width atPoint:(CGPoint)center
{
    CGFloat w = width / 2.f;// / 1.3f;
    
    UIBezierPath *path = [[UIBezierPath alloc] init];
    
    [path addArcWithCenter:CGPointMake(center.x - w/2.f, center.y - sqrt(3.f) * w / 6.f) radius:w / sqrt(3.f) startAngle:[self toRadians:150.f] endAngle:[self toRadians:-30.f] clockwise:YES];
    [path addArcWithCenter:CGPointMake(center.x + w/2.f, center.y - sqrt(3.f) * w / 6.f) radius:w / sqrt(3.f) startAngle:[self toRadians:-150.f] endAngle:[self toRadians:30.f] clockwise:YES];
    
    [path moveToPoint:CGPointMake(center.x - w, center.y)];
    [path addLineToPoint:CGPointMake(center.x, center.y + w*0.6 * sqrt(3.f))];
    [path addLineToPoint:CGPointMake(center.x + w, center.y)];
    
    return path;
}
2.缩放
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
animation.duration = 0.8;
animation.fromValue = @(1.0);
animation.toValue = @(1.5);
animation.autoreverses = YES;
animation.repeatCount = CGFLOAT_MAX;
3.旋转
CABasicAnimation *animation3 = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
animation3.fromValue = @(0);
animation3.toValue = @(6*M_PI);
animation3.duration = 0.2;
animation3.repeatCount = CGFLOAT_MAX;
4.位移
    CAKeyframeAnimation *animation2 = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    animation2.values = @[
                          [NSValue valueWithCGPoint:layer.position],
                          [NSValue valueWithCGPoint:CGPointMake(layer.position.x+200, layer.position.y)],
                          [NSValue valueWithCGPoint:CGPointMake(layer.position.x+200, layer.position.y+300)],
                          [NSValue valueWithCGPoint:CGPointMake(layer.position.x, layer.position.y+300)],
                          [NSValue valueWithCGPoint:layer.position]
                          ];
    animation2.keyTimes = @[
                             @(0),@(0.2),@(0.5),@(0.7),@(1)
                            ];
    animation2.autoreverses = NO;
5.添加到一个CAAnimationGroup
CAAnimationGroup *aniGroup = [CAAnimationGroup animation];
aniGroup.duration = 8;
aniGroup.animations = @[animation,animation2,animation3];
aniGroup.repeatCount = CGFLOAT_MAX;
[layer addAnimation:aniGroup forKey:@"grouani"];

相关文章

网友评论

    本文标题:iOS CAAnimationGroup

    本文链接:https://www.haomeiwen.com/subject/zskskttx.html