清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
- (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{} }