iOS核心動畫-汽車爬坡小動畫

前言

今天看到一個汽車爬坡的小動畫,覺得挺好玩的,記錄一下實現(xiàn)過程。


實現(xiàn)過程

主要代碼

- (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];
}

實現(xiàn)效果

20190709_153127.GIF

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1 CALayer IOS SDK詳解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi閱讀 5,336評論 3 23
  • 對《玉觀音》這部劇的模糊記憶源自中學時代,因為剛剛去過云南,因此就有了重溫這部劇的念頭。我想知道,在這個充滿夢幻色...
    冬木蕭蕭閱讀 7,006評論 2 3
  • 我從兜里拿出300元錢,偷偷的放在媽的包里,然后“驚喜”地喊道:“媽,這不是你的錢嗎?找著了!”,媽笨拙的叢炕旮旯...
    風鈴_f1d6閱讀 115評論 0 0
  • 今天中午吃完飯,我就去上街舞課。老師先讓我們做熱身運動,目的是讓我們把身體的每一個部位活動開,以免受傷...
    俊浩閱讀 272評論 0 3

友情鏈接更多精彩內容