美文网首页iOS大咖说ios开发进阶iOS 功能类
CALayer颜色动画转场效果,提高用户体验

CALayer颜色动画转场效果,提高用户体验

作者: JCtop | 来源:发表于2017-06-27 09:35 被阅读488次

    自从来到简书,开始了自己的创作,学会了与人分享:

    分享使人快乐

    自己在分享的同时也会不断的注意到别人的分享,不经意间,就有了对比,发现了自己的不足,于是你就萌生了【要进步】的想法。其实当你有了这种想法的时候,它本身就是一种进步。可能在这之后,你会有一系列的计划(每天自学点xxx,每天坚持锻炼。。。。。),但是计划永远只是计划,【实践】才是你最最需要的。

    说了一通,好像和正题没什么关系。-

    好吧,先来看看看效果图:

    2017-06-27 09_29_47.gif

    其实,非常简单的,只要添加该方法:

    /*  关键  */
    -(void)addClickEffectForView:(UIView *)view withClickPointInSuperView:(CGPoint)point withEffectColor:(UIColor *)color removeWhenFinished:(BOOL)isRemove {
    view.layer.masksToBounds = YES;
    //创建layer
    CALayer *clickEffectLayer = [CALayer layer];
    CGFloat radius = sqrtf((powf(view.frame.size.width, 2) + powf(view.frame.size.height, 2)));//扩散圆的半径
    
    clickEffectLayer.frame = CGRectMake(0, 0, radius * 2, radius * 2);
    clickEffectLayer.cornerRadius = radius;
    clickEffectLayer.position = point;
    clickEffectLayer.backgroundColor = color.CGColor;
    [view.layer insertSublayer:clickEffectLayer atIndex:0];//将layer放在底层
    
    //尺寸比例动画
    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.xy"];
    scaleAnimation.fromValue = @0.1;//开始的大小
    scaleAnimation.toValue = @1.0;//最后的大小
    scaleAnimation.duration = 0.5;//动画持续时间
    [clickEffectLayer addAnimation:scaleAnimation forKey:@"pulse"];
    //完成动画是否移除
    if (isRemove) {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            [clickEffectLayer removeFromSuperlayer];
        });
    }
    }
    

    想要demo的朋友:
    github:https://github.com/SeriouslyFunny/HSFColorTransitions

    如果你觉得还可以的话,留下你珍贵的star , 你的支持是我前进的最大动力。谢谢^^

    相关文章

      网友评论

      • tongxyj:没看出来效果是啥
        JCtop: @井FFFFFF 有动图展示啊

      本文标题:CALayer颜色动画转场效果,提高用户体验

      本文链接:https://www.haomeiwen.com/subject/wkvscxtx.html