iOS核心动画-汽车爬坡小动画

前言

今天看到一个汽车爬坡的小动画,觉得挺好玩的,记录一下实现过程。


实现过程

主要代码

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.view.backgroundColor = [UIColor brownColor];
    self.title = @"汽车爬坡";
    
    UIBezierPath *bezierPath = [UIBezierPath bezierPath];
    [bezierPath moveToPoint:CGPointMake(20, 200)];
    [bezierPath addCurveToPoint:CGPointMake(300, 200) controlPoint1:CGPointMake(100, 0) controlPoint2:CGPointMake(200, 400)];
    
    CAShapeLayer *pathLayer = [CAShapeLayer layer];
    pathLayer.path = bezierPath.CGPath;
    pathLayer.fillColor = nil;
    pathLayer.strokeColor = [UIColor redColor].CGColor;
    [self.view.layer addSublayer:pathLayer];
    
    CALayer *carLayer = [CALayer layer];
    carLayer.frame = CGRectMake(0, 0, 36, 36);
    carLayer.anchorPoint = CGPointMake(0.5, 0.8);
    carLayer.position = CGPointMake(20, 210);
    carLayer.contents = (id)[UIImage imageNamed:@"car"].CGImage;
    [self.view.layer addSublayer:carLayer];
    
    CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
    anim.keyPath = @"position";
    anim.path = bezierPath.CGPath;
    anim.duration = 4.0;
    anim.rotationMode = kCAAnimationRotateAuto;
    [carLayer addAnimation:anim forKey:nil];
}

实现效果

20190709_153127.GIF

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 5,215评论 3 23
  • 对《玉观音》这部剧的模糊记忆源自中学时代,因为刚刚去过云南,因此就有了重温这部剧的念头。我想知道,在这个充满梦幻色...
    冬木萧萧阅读 5,994评论 2 3
  • 我从兜里拿出300元钱,偷偷的放在妈的包里,然后“惊喜”地喊道:“妈,这不是你的钱吗?找着了!”,妈笨拙的丛炕旮旯...
    风铃_f1d6阅读 95评论 0 0
  • 今天中午吃完饭,我就去上街舞课。老师先让我们做热身运动,目的是让我们把身体的每一个部位活动开,以免受伤...
    俊浩阅读 254评论 0 3