CoreAnimation基本介紹:
- CoreAnimation動畫位于iOS框架的Media層
- CoreAnimation動畫實現需要添加QuartzCore.Framework
- CoreAnimation基本上是LayerAnimation
?
CoreAnimation分類:
CoreAnimation作用:
CoreAnimation
?
?
CALayer基本介紹
?
CALayer的常用屬性
?
CABasicAnimation
?
CAKeyframeAnimation
?
?
CAAnimationGroup
CASpringAnimation
?
XIB分別設置幾個button然后關聯方法,代碼展示:
1 @interface ViewController () 2 @property (weak, nonatomic) IBOutlet UIImageView *imageView; 3 4 @end 5 6 @implementation ViewController 7 #pragma mark - CABasicAnimation 8 - (IBAction)CABasicAnimation:(id)sender { 9 // 第一步:創建動畫對象 10 CABasicAnimation *basicAnimation = [CABasicAnimation animation]; 11 // 第二步:告訴layer層需要執行什么樣的動畫(后邊設置的內容為CALayer的相關屬性) 12 basicAnimation.keyPath = @"position"; // position 改變位置的 13 // 第三步:告訴layer從哪里來,到哪里去 14 basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)]; 15 basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 600)]; 16 // 注意點: 如果要實現圖片不會到原來點,需要以下兩句代碼 17 basicAnimation.removedOnCompletion = NO; 18 // 設置保存動畫狀態的內容 19 basicAnimation.fillMode = kCAFillModeForwards; 20 21 // 第四步:設置動畫持續的時長 22 basicAnimation.duration = 6.0f; 23 // 第五步:將要執行的動畫添加到calayer上 24 [self.imageView.layer addAnimation:basicAnimation forKey:@"basic"]; 25 // *************翻轉效果 26 CABasicAnimation *basic = [CABasicAnimation animation]; 27 basic.keyPath = @"transform"; 28 // 設置翻轉的地方 29 basic.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0, 0, 1)]; 30 basic.duration = 0.2f; 31 [self.imageView.layer addAnimation:basic forKey:@"aaaa"]; 32 // 根據key去移除動畫 33 // [self.imageView.layer removeAnimationForKey:@"basic"]; 34 } 35 36 #pragma mark - CAKeyframeAnimation 37 - (IBAction)CAKeyAnimation:(id)sender { 38 // 第一步:創建對象 39 CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animation]; 40 // 第二步:設置動畫軌跡 41 keyAnimation.keyPath = @"transform.rotation"; 42 // 第三步:設置翻轉的角度 (弧度計算公式:度數/180*M_PI) 43 keyAnimation.values = @[@(-300 / 180.0 * M_PI), @(300 / 180.0 * M_PI), @(-180 / 180.0 * M_PI)]; 44 // 第四步:設置時長 45 keyAnimation.duration = 15.0f; 46 // 第五步:添加動畫到layer層 47 [self.view.layer addAnimation:keyAnimation forKey:@"bbbb"]; 48 } 49 50 #pragma mark - CAAnimationGroup 51 - (IBAction)CAAnimationGroup:(id)sender { 52 // 平移動畫 53 CABasicAnimation *basic1 = [CABasicAnimation animation]; 54 basic1.keyPath = @"transform.translation.y"; // 按照y軸平移 55 basic1.toValue = @(400); 56 // 縮小動畫 57 CABasicAnimation *basic2 = [CABasicAnimation animation]; 58 basic2.keyPath = @"transform.scale"; // 縮小 59 basic2.toValue = @(0.3); 60 // 旋轉動畫 61 CABasicAnimation *basic3 = [CABasicAnimation animation]; 62 basic3.keyPath = @"transform.rotation"; // 旋轉 63 basic3.toValue = @(M_PI); 64 65 // 需要創建管理各個動畫的動畫組 66 CAAnimationGroup *group = [CAAnimationGroup animation]; 67 group.animations = @[basic1,basic2,basic3]; 68 // group 會自動分配時間 69 group.duration = 5.0f; 70 71 [self.imageView.layer addAnimation:group forKey:@"ccccc"]; 72 } 73 74 #pragma mark - CASpring 75 - (IBAction)CASpring:(id)sender { 76 // 設置對象 77 CASpringAnimation *spring = [CASpringAnimation animation]; 78 spring.keyPath = @"transform.scale"; 79 spring.fromValue = @1; 80 spring.toValue = @0.2; 81 spring.duration = 3.0f; 82 83 [self.imageView.layer addAnimation:spring forKey:@"ddddd"]; 84 } 85 86 @end
總結: