| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
10年前发布

iOS类似心跳的动画缩放

- (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{}    }