android美团的购物车动画,模仿饿了么、美团添加购物车的动画效果

#pragma mark -加入购物车动画

-(void) JoinCartAnimationWithRect:(CGRect)rect

{

CGFloat _endPoint_x = 35;

CGFloat _endPoint_y = 713 - 35;

CGFloat startX = rect.origin.x;

CGFloat startY = rect.origin.y;

//1.建立佩塞尔曲线:

_path= [UIBezierPath bezierPath];

//设置起点:

[_path moveToPoint:CGPointMake(startX, startY)];

//建立路径:三点曲线

[_path addCurveToPoint:CGPointMake(_endPoint_x, _endPoint_y) controlPoint1:CGPointMake(startX, startY) controlPoint2:CGPointMake(startX - 180, startY - 200)];

//2.建立layer图标:

_dotLayer = [CALayer layer];

_dotLayer.backgroundColor = [UIColor purpleColor].CGColor;

_dotLayer.frame = CGRectMake(0, 0, 20, 20);

_dotLayer.cornerRadius = 5;

_dotLayer.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"01.png"]].CGColor;

[self.view.layer addSublayer:_dotLayer];

//三、组合动画:

[self groupAnimation];

}

#pragma mark - 组合动画

-(void)groupAnimation

{

//一、

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

animation.path = _path.CGPath;

animation.rotationMode = kCAAnimationRotateAuto;

//二、

CABasicAnimation *alphaAnimation = [CABasicAnimation animationWithKeyPath:@"alpha"];

alphaAnimation.duration = 0.5f;

alphaAnimation.fromValue = [NSNumber numberWithFloat:1.0];

alphaAnimation.toValue = [NSNumber numberWithFloat:0.1];

alphaAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];

//三、

CAAnimationGroup *groups = [CAAnimationGroup animation];

groups.animations = @[animation,alphaAnimation];

groups.duration = durationTime;

groups.removedOnCompletion = NO;

groups.fillMode = kCAFillModeForwards;

groups.delegate = self;

[groups setValue:@"groupsAnimation" forKey:@"animationName"];

[_dotLayer addAnimation:groups forKey:nil];

[self performSelector:@selector(removeFromLayer:) withObject:_dotLayer afterDelay:durationTime];

}google

//执行完后移除:

- (void)removeFromLayer:(CALayer *)layerAnimation{

[layerAnimation removeFromSuperlayer];

}.net

#pragma mark - CAAnimationDelegate

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag

{

if ([[anim valueForKey:@"animationName"]isEqualToString:@"groupsAnimation"]) {

CABasicAnimation *shakeAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

shakeAnimation.duration = 0.25f;

shakeAnimation.fromValue = [NSNumber numberWithFloat:0.9];

shakeAnimation.toValue = [NSNumber numberWithFloat:1];

shakeAnimation.autoreverses = YES;

// 这里是下方的自定义View上面 放的btn. 本身随便定义一个 0.-

//[_shopCartView.btnBackImg.layer addAnimation:shakeAnimation forKey:nil];

}

}orm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值