ios核心动画之关键帧动画

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios核心动画之关键帧动画相关的知识,希望对你有一定的参考价值。

 1 #import "NJViewController.h"
 2 
 3 @interface NJViewController ()
 4 
 5 @property (weak, nonatomic) IBOutlet UIView *customView;
 6 - (IBAction)btnClick:(id)sender;
 7 @end
 8 
 9 @implementation NJViewController
10 
11 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
12 {
13 
14     [self test1];
15 //    [self test1];
16 }
17 
18 - (void)test1
19 {
20     // 1.创建核心动画
21     CAKeyframeAnimation *keyAnima = [CAKeyframeAnimation animation];
22     // 1.1告诉系统执行什么动画
23     keyAnima.keyPath = @"position";
24     
25     CGMutablePathRef path = CGPathCreateMutable();
26     CGPathAddEllipseInRect(path, NULL, CGRectMake(0, 100, 200, 200));
27     
28     keyAnima.path = path;
29     CGPathRelease(path);
30     
31     // 1.2保存执行完之后的状态
32     // 1.2.1执行完之后不删除动画
33     keyAnima.removedOnCompletion = NO;
34     // 1.2.2执行完之后保存最新的状态
35     keyAnima.fillMode = kCAFillModeForwards;
36     
37     // 1.3设置动画时间
38     keyAnima.duration = 2;
39     // 2.观察动画什么时候开始执行, 以及什么时候执行完毕
40     keyAnima.delegate = self;
41     // 3.添加核心动画
42     [self.customView.layer addAnimation:keyAnima forKey:@"abc"];
43 }
44 
45 - (IBAction)btnClick:(id)sender {
46     
47     // 停止动画
48     [self.customView.layer removeAnimationForKey:@"abc"];
49 }
50 
51 
52 - (void)test
53 {
54     // 1.创建核心动画
55     CAKeyframeAnimation *keyAnima = [CAKeyframeAnimation animation];
56     // 1.1告诉系统执行什么动画
57     keyAnima.keyPath = @"position";
58     //    NSValue *v1 = [NSValue valueWithCGPoint:CGPointMake(0, 100)];
59     NSValue *v2 = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
60     NSValue *v3 = [NSValue valueWithCGPoint:CGPointMake(100, 200)];
61     NSValue *v4 = [NSValue valueWithCGPoint:CGPointMake(0, 200)];
62     NSValue *v5 = [NSValue valueWithCGPoint:CGPointMake(0, 100)];
63     
64     keyAnima.values = @[v2, v3, v4, v5];
65     
66     //    keyAnima.keyTimes = @[@(0.5) ,@(0.5), @(0.5)];
67     
68     keyAnima.timingFunction =  [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
69     
70     // 1.2保存执行完之后的状态
71     // 1.2.1执行完之后不删除动画
72     keyAnima.removedOnCompletion = NO;
73     // 1.2.2执行完之后保存最新的状态
74     keyAnima.fillMode = kCAFillModeForwards;
75     
76     // 1.3设置动画时间
77     keyAnima.duration = 2;
78     
79     // 2.观察动画什么时候开始执行, 以及什么时候执行完毕
80     keyAnima.delegate = self;
81     
82     
83     // 2.添加核心动画
84     [self.customView.layer addAnimation:keyAnima forKey:nil];
85 }
86 
87 - (void)animationDidStart:(CAAnimation *)anim
88 {
89     NSLog(@"animationDidStart");
90 }
91 
92 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
93 {
94     NSLog(@"animationDidStop");
95 }
96 
97 
98 @end

 

以上是关于ios核心动画之关键帧动画的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发UI篇—核心动画(关键帧动画)

iOS_40_核心动画

ios之CAKeyframeAnimation关键帧动画详解

核心动画(关键帧动画)-转

iOS核心动画

iOS CoreAnimation 关键帧动画 CAKeyframeAnimation