1 - (void)viewDidLoad {
 2 
 3     [super viewDidLoad];
 4 
 5     // Do any additional setup after loading the view, typically from a nib.
 6 
 7     UIView  *view =[[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
 8 
 9     view.backgroundColor =[UIColor redColor];
10 
11     [self.view addSubview:view];
12 
13     [self heartbeatView:view duration:100];
14 
15 }
16 
17 
18 
19 -(void)heartbeatView:(UIView *)view duration:(CGFloat)fDuration
20 
21 {
22 
23     [[self class] heartbeatView:view duration:fDuration maxSize:1.4f durationPerBeat:0.5f];
24 
25 }
26 
27 +(void)heartbeatView:(UIView *)view duration:(CGFloat)fDuration maxSize:(CGFloat)fMaxSize durationPerBeat:(CGFloat)fDurationPerBeat
28 
29 {
30 
31     if (view && (fDurationPerBeat > 0.1f))
32 
33     {
34 
35         CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
36 
37         
38 
39         CATransform3D scale1 = CATransform3DMakeScale(0.8, 0.8, 1);
40 
41         CATransform3D scale2 = CATransform3DMakeScale(fMaxSize, fMaxSize, 1);
42 
43         CATransform3D scale3 = CATransform3DMakeScale(fMaxSize - 0.3f, fMaxSize - 0.3f, 1);
44 
45         CATransform3D scale4 = CATransform3DMakeScale(1.0, 1.0, 1);
46 
47         
48 
49         NSArray *frameValues = [NSArray arrayWithObjects:
50 
51                                 [NSValue valueWithCATransform3D:scale1],
52 
53                                 [NSValue valueWithCATransform3D:scale2],
54 
55                                 [NSValue valueWithCATransform3D:scale3],
56 
57                                 [NSValue valueWithCATransform3D:scale4],
58 
59                                 nil];
60 
61         
62 
63         [animation setValues:frameValues];
64 
65         
66 
67         NSArray *frameTimes = [NSArray arrayWithObjects:
68 
69                                [NSNumber numberWithFloat:0.05],
70 
71                                [NSNumber numberWithFloat:0.2],
72 
73                                [NSNumber numberWithFloat:0.6],
74 
75                                [NSNumber numberWithFloat:1.0],
76 
77                                nil];
78 
79         [animation setKeyTimes:frameTimes];
80 
81         
82 
83         animation.fillMode = kCAFillModeForwards;
84 
85         animation.duration = fDurationPerBeat;
86 
87         animation.repeatCount = fDuration/fDurationPerBeat;
88 
89         
90 
91         [view.layer addAnimation:animation forKey:@"heartbeatView"];
92 
93     }else{}
94 
95 }

 

posted on 2016-07-26 11:20  空虚的码农  阅读(1139)  评论(0编辑  收藏  举报