等待动画上下跳动加载的原理模型

来源:互联网 发布:浏览器无法打开淘宝 编辑:程序博客网 时间:2024/06/06 10:49
/** *  brief 弹跳动画 * *  @param view     执行弹跳动画的view *  @param height   弹跳的高度 *  @param duration 弹跳的时间 */- (void)bounceWithView:(UIView *)view height:(CGFloat)height duration:(CFTimeInterval)duration;{    CGPoint center = CGPointMake(view.frame.origin.x + view.frame.size.width * 0.5f, view.frame.origin.y + view.frame.size.height*0.5f);    /*创建一个关键帧动画对象,key值为layer的position属性*/    CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];    /*创建一个可变数组,用于存储每帧执行后position的位置*/    NSMutableArray *valuesArray = [[NSMutableArray alloc] init];    /*第一帧的位置*/    [valuesArray addObject:[NSValue valueWithCGPoint:center]];    [valuesArray addObject:[NSValue valueWithCGPoint:CGPointMake(center.x, center.y+height)]];    [valuesArray addObject:[NSValue valueWithCGPoint:center]];        /*创建一个数组,用于存储每一帧的时间点*/    NSArray *timesArray = @[@(0), @(0.4),@(1)];        /*再创建一个数组,用于保存每一帧的动画曲线*/    NSArray *timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn],                                 [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],                                 [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];    /*设置关键帧的值*/    animation.values = valuesArray;    /*设置关键帧时间点的值*/    animation.keyTimes = timesArray;    /*设置动画曲线*/    animation.timingFunctions = timingFunctions;    /*设置动画时间*/    animation.duration = duration;    /*设置代理*/    animation.delegate = self;    /*设置动画完成后是否自动移除,默认是YES,此处改为NO,否则在animationDidStop里就找不到这个动画了*/    animation.removedOnCompletion = NO;    /*重复执行*/    animation.repeatCount = HUGE_VAL;    /*将动画添加近_menuView.layer中*/    [view.layer addAnimation:animation forKey:@"menuAnimation"];}

0 0