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

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

分享使人快乐

自己在分享的同时也会不断的注意到别人的分享,不经意间,就有了对比,发现了自己的不足,于是你就萌生了【要进步】的想法。其实当你有了这种想法的时候,它本身就是一种进步。可能在这之后,你会有一系列的计划(每天自学点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 , 你的支持是我前进的最大动力。谢谢^^

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容