iOS学习----------支付宝咻咻咻

类似于支付宝咻一咻功能的动画效果

1、用到的几个类
CADisplayLink:可以实现不停的重绘 默认为每秒运行60次
CAAnimationGroup:
CAMediaTimingFunction:

(1)创建CADisplayLink对象,重绘界面
_animationLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(animationStart:)];
_animationLink.frameInterval = 40;
[_animationLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

(2)动画设置
-(void)startDisplayLink
{
   
//创建一个图层
   
CALayer *layer = [CALayer layer];
   
//设置圆角度
    layer.
cornerRadius = [UIScreen mainScreen].bounds.size.width * 0.5;
   
   
//图层大小
    layer.
frame = CGRectMake(0, 0, layer.cornerRadius * 2, layer.cornerRadius * 2);
   
   
//图层的位置
    layer.
position = self.view.layer.position;
   
   
//设置颜色
   
UIColor *randomColor = [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1];
   
//设置涂成颜色
    layer.
backgroundColor = randomColor.CGColor;
   
//将图层添加在view的图层上
    [
self.view.layer addSublayer:layer];
   
   
   
//设置动画快慢
   
CAMediaTimingFunction *defaultCurve = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
   
   
//动画组
   
_animationGroup = [CAAnimationGroup animation];
   
_animationGroup.delegate = self;
   
_animationGroup.duration = 2.0;
   
_animationGroup.removedOnCompletion = YES; //完成后移除图层
   
_animationGroup.timingFunction = defaultCurve;
   
   
   
//动画
   
CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.xy"];
    scaleAnimation.
fromValue = @0.0;
    scaleAnimation.
toValue = @1.0;
    scaleAnimation.
duration = 2.0;
   
   
//关键 动画
   
CAKeyframeAnimation *opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
    opacityAnimation.
duration = 2.0;
    opacityAnimation.
values = @[@0.8,@0.4,@0];
    opacityAnimation.
keyTimes = @[@0,@0.5,@1];
    opacityAnimation.
removedOnCompletion = YES;
   
   
NSArray *animations = @[scaleAnimation,opacityAnimation];
   
_animationGroup.animations = animations;
    [layer
addAnimation:_animationGroup forKey:nil];
   
   
    [self performSelector:@selector(removeLayer:) withObject:layer afterDelay:1.5];
}

-(void)removeLayer:(CALayer *)layer
{
    [layer
removeFromSuperlayer];
}

//移除停止并置空
[self.view.layer removeAllAnimations];
[_animationLink invalidate];
_animationLink = nil;







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值