- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- UIView *view =[[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
- view.backgroundColor =[UIColor redColor];
- [self.view addSubview:view];
- [self heartbeatView:view duration:100];
- }
- -(void)heartbeatView:(UIView *)view duration:(CGFloat)fDuration
- {
- [[self class] heartbeatView:view duration:fDuration maxSize:1.4f durationPerBeat:0.5f];
- }
- +(void)heartbeatView:(UIView *)view duration:(CGFloat)fDuration maxSize:(CGFloat)fMaxSize durationPerBeat:(CGFloat)fDurationPerBeat
- {
- if (view && (fDurationPerBeat > 0.1f))
- {
- CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
- CATransform3D scale1 = CATransform3DMakeScale(0.8, 0.8, 1);
- CATransform3D scale2 = CATransform3DMakeScale(fMaxSize, fMaxSize, 1);
- CATransform3D scale3 = CATransform3DMakeScale(fMaxSize - 0.3f, fMaxSize - 0.3f, 1);
- CATransform3D scale4 = CATransform3DMakeScale(1.0, 1.0, 1);
- NSArray *frameValues = [NSArray arrayWithObjects:
- [NSValue valueWithCATransform3D:scale1],
- [NSValue valueWithCATransform3D:scale2],
- [NSValue valueWithCATransform3D:scale3],
- [NSValue valueWithCATransform3D:scale4],
- nil];
- [animation setValues:frameValues];
- NSArray *frameTimes = [NSArray arrayWithObjects:
- [NSNumber numberWithFloat:0.05],
- [NSNumber numberWithFloat:0.2],
- [NSNumber numberWithFloat:0.6],
- [NSNumber numberWithFloat:1.0],
- nil];
- [animation setKeyTimes:frameTimes];
- animation.fillMode = kCAFillModeForwards;
- animation.duration = fDurationPerBeat;
- animation.repeatCount = fDuration/fDurationPerBeat;
- [view.layer addAnimation:animation forKey:@"heartbeatView"];
- }else{}
- }
来源: http://www.phpxs.com/code/1005446/