自从来到简书,开始了自己的创作,学会了与人分享:
分享使人快乐
自己在分享的同时也会不断的注意到别人的分享,不经意间,就有了对比,发现了自己的不足,于是你就萌生了【要进步】的想法。其实当你有了这种想法的时候,它本身就是一种进步。可能在这之后,你会有一系列的计划(每天自学点xxx,每天坚持锻炼。。。。。),但是计划永远只是计划,【实践】才是你最最需要的。
说了一通,好像和正题没什么关系。-
好吧,先来看看看效果图:
其实,非常简单的,只要添加该方法:
/* 关键 */
-(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 , 你的支持是我前进的最大动力。谢谢^^