怎么在iOS中添加一个购物车动画效果

  介绍

怎么在iOS中添加一个购物车动画效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>一、计算动画开始结束点位置

方法:

安康;(CGPoint) convertPoint: (CGPoint) point 要查看:(nullable  UIView  *)视图;

1)动画开始位置fromCenter

代码如下:


CGPoint fromCenter=,[animationView convertPoint: CGPointMake (animationView.frame.size.width * 0.5 f, animationView.frame.size.height * 0.5 f)要查看:keyWindow],

2)动画结束位置endCenter

代码如下:


CGPoint endCenter=[endView convertPoint: CGPointMake (endView.frame.size.width * 0.5 f, endView.frame.size.height * 0.5 f)要查看:keyWindow],

<强>二,计算贝塞尔曲线(抛物线)的两个控制点

怎么在iOS中添加一个购物车动画效果

<李>

controlPoint1是控制点1

<李>

controlPoint2是控制点2

<李>

是controlPoint1和controlPoint2的中点

<李>

controlPointC是fromCenter和B的中点

1)先设置控制点距最高点(fromCenter或endCenter)的水平距离controlPointEY,本篇默认controlPointEY=100,即图1中点controlPointC到点一的距离。

2)计算控制点相对于点一的距离controlPointEX,即controlPoint1到一个距离或controlPoint2到一个距离,本篇设置为fromCenter.x到endCenter。x的1/4,即controlPointEX=(endCenter。x - fromCenter.x) * 0.25 f;

3)计算两个控制点

CGPoint  controlPoint1 =, CGPointMake (controlPointCX 安康;controlPointEX, controlPointCY 作用;controlPointEY);   CGPoint  controlPoint2 =, CGPointMake(时间+ controlPointCX  controlPointEX,, controlPointCY 作用;controlPointEY);

<强>三、复制动画的层

NSString  * str =, ((UIButton  *) animationView) .titleLabel.text;   时间=_animationLayer  [CATextLayer 层);   时间=_animationLayer.bounds  animationView.bounds;   时间=_animationLayer.position  fromCenter;   时间=_animationLayer.alignmentMode  kCAAlignmentCenter;//文字对齐方式   时间=_animationLayer.wrapped 是的;   时间=_animationLayer.contentsScale  [UIScreen  mainScreen] .scale;   _animationLayer.string =, str;   时间=_animationLayer.backgroundColor  [UIColor  redColor] .CGColor;   [keyWindow.layer  addSublayer: _animationLayer];

<强>四、动画组合

1)运动轨迹(抛物线)

UIBezierPath  * path =, [UIBezierPath  bezierPath];   [path  moveToPoint fromCenter):;   [path  addCurveToPoint: endCenter  controlPoint1: controlPoint1  controlPoint2: controlPoint2);   CAKeyframeAnimation  * pathAnimation =, (CAKeyframeAnimation  animationWithKeyPath: @" position");   时间=pathAnimation.path  path.CGPath;

2)旋转起来

CABasicAnimation  * rotateAnimation =, (CABasicAnimation  animationWithKeyPath: @" transform.rotation");   时间=rotateAnimation.removedOnCompletion 是的;   时间=rotateAnimation.fromValue  [NSNumber  numberWithFloat: 0];   时间=rotateAnimation.toValue  [NSNumber  numberWithFloat: 10, *, M_PI);   rotateAnimation.timingFunction=[CAMediaTimingFunction  functionWithName kCAMediaTimingFunctionEaseIn):

3)缩放动画

CABasicAnimation  * scaleAnimation =, (CABasicAnimation  animationWithKeyPath: @" transform.scale");   scaleAnimation.removedOnCompletion =,没有;   scaleAnimation.fromValue =, (NSNumber  numberWithFloat: 1.0);   scaleAnimation.toValue =, (NSNumber  numberWithFloat: 0.2);

4)透明度动画

CABasicAnimation  * alphaAnimation =, (CABasicAnimation  animationWithKeyPath: @" opacity");   alphaAnimation.removedOnCompletion =,没有;   alphaAnimation.fromValue =, (NSNumber  numberWithFloat: 1.0);   alphaAnimation.toValue =, (NSNumber  numberWithFloat: 0.1);

5)动画组合

CAAnimationGroup  * groups =, (CAAnimationGroup 动画);   groups.animations =, @ [pathAnimation、rotateAnimation, scaleAnimation,, alphaAnimation);   时间=groups.duration  kShoppingCartDuration;   groups.removedOnCompletion=没有;   groups.fillMode=kCAFillModeForwards;   时间=groups.delegate 自我;   [_animationLayer  addAnimation: groups  forKey: @" group"];

怎么在iOS中添加一个购物车动画效果