当前位置: 首页 > 编程笔记 >

iOS实现手指点击出现波纹的效果

陶修洁
2023-03-14
本文向大家介绍iOS实现手指点击出现波纹的效果,包括了iOS实现手指点击出现波纹的效果的使用技巧和注意事项,需要的朋友参考一下

实现来看看模拟器上效果:

具体的实现代码如下

首先监听控制器view的Tap事件

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTap:)];
 [self.view addGestureRecognizer:tap];
- (void)onTap:(UITapGestureRecognizer*)sender {
 CGPoint center = [sender locationInView:sender.view];
 [FingerWaveView showInView:self.view center:center];
}

FingerWaveView.h

#import <UIKit/UIKit.h>
@interface FingerWaveView : UIView
+ (instancetype)showInView:(UIView *)view center:(CGPoint)center;
@end

FingerWaveView.m

#import "FingerWaveView.h"
@interface FingerWaveView () <CAAnimationDelegate>
{
 CGSize waveSize;
 NSTimeInterval duration;
}
@end
@implementation FingerWaveView
- (instancetype)initWithFrame:(CGRect)frame{
 self=[super initWithFrame:frame];
 if (self) {
  waveSize = CGSizeMake(150, 150);
  duration = 1.0;
 }
 return self;
}
+ (instancetype)showInView:(UIView *)view center:(CGPoint)center {
 FingerWaveView *waveView = [FingerWaveView new];
 [waveView setframeWithCenter:center];
 [view addSubview:waveView];
 return waveView;
}
- (void)didMoveToSuperview{
 CAShapeLayer *waveLayer = [CAShapeLayer new];
 waveLayer.backgroundColor = [UIColor clearColor].CGColor;
 waveLayer.opacity = 0.6;
 waveLayer.fillColor = [UIColor whiteColor].CGColor;
 [self.layer addSublayer:waveLayer];

 [self startAnimationInLayer:waveLayer];
}
- (void)startAnimationInLayer:(CALayer *)layer{
 UIBezierPath *beginPath = [UIBezierPath bezierPathWithArcCenter:[self pathCenter] radius:[self animationBeginRadius] startAngle:0 endAngle:M_PI*2 clockwise:YES];
 UIBezierPath *endPath = [UIBezierPath bezierPathWithArcCenter:[self pathCenter] radius:[self animationEndRadius] startAngle:0 endAngle:M_PI*2 clockwise:YES];

 CABasicAnimation *rippleAnimation = [CABasicAnimation animationWithKeyPath:@"path"];
 rippleAnimation.delegate = self;
 rippleAnimation.fromValue = (__bridge id _Nullable)(beginPath.CGPath);
 rippleAnimation.toValue = (__bridge id _Nullable)(endPath.CGPath);
 rippleAnimation.duration = duration;

 CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
 opacityAnimation.delegate = self;
 opacityAnimation.fromValue = [NSNumber numberWithFloat:0.6];
 opacityAnimation.toValue = [NSNumber numberWithFloat:0.0];
 opacityAnimation.duration = duration;

 [layer addAnimation:rippleAnimation forKey:@"rippleAnimation"];
 [layer addAnimation:opacityAnimation forKey:@"opacityAnimation"];
}
- (void)setframeWithCenter:(CGPoint)center{
 CGRect frame = CGRectMake(center.x-waveSize.width*0.5, center.y-waveSize.height*0.5, waveSize.width, waveSize.height);
 self.frame = frame;;
}
- (CGFloat)animationBeginRadius{
 return waveSize.width*0.5*0.2;
}
- (CGFloat)animationEndRadius{
 return waveSize.width*0.5;
}
- (CGPoint)pathCenter{
 return CGPointMake(waveSize.width*0.5, waveSize.height*0.5);
}
#pragma mark - CAAnimationDelegate
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
 if (flag) {
  [self removeFromSuperview];
 }
}
@end

总结

大家也可以DIY我的代码,做出很多其他的效果,比如改成其他的波纹颜色。以上就是这篇文章的全部内容了,希望本文的内容ui各位iOS开发者们能有所帮助,如果有疑问大家可以留言交流。

 类似资料:
  • 本文向大家介绍flutter InkWell实现水波纹点击效果,包括了flutter InkWell实现水波纹点击效果的使用技巧和注意事项,需要的朋友参考一下 在flutter 开发中用InkWell或者GestureDetector将某个组件包起来,已添加点击事件。 GestureDetector 使用点击无水波纹出现,InkWell可以实现水波纹效果。 正常情况下使用 : 如果在InkWell

  • 本文向大家介绍Android实现点击Button产生水波纹效果,包括了Android实现点击Button产生水波纹效果的使用技巧和注意事项,需要的朋友参考一下 先上图,看看接下来我要向大家介绍的是个什么东西,如下图: 接下来要介绍的就是如何实现上述图中的波纹效果,这种效果如果大家没有体验过的话,可以看看百度手机卫士或者360手机卫士,里面的按钮点击效果都是这样的,另外Android 5.0以上的版

  • 本文向大家介绍iOS 水波纹动画的实现效果,包括了iOS 水波纹动画的实现效果的使用技巧和注意事项,需要的朋友参考一下 本人最近在研究iOS动画,至于原理,我不在这里说了。毕竟这里的标题:水波纹的实现。 在这里,要学习水波纹的实现,首先要知道以下几点知识: 1.正弦函数:y = Asin(wx +b) + c。相信大家都比较熟悉。 2.CAShapeLayer的简单实用,相信看一下,就是知道其大概

  • 本文向大家介绍基于JS+Canves实现点击按钮水波纹效果,包括了基于JS+Canves实现点击按钮水波纹效果的使用技巧和注意事项,需要的朋友参考一下 近来看到个不错的按钮点击效果,当点击时产生一次水波涟漪效果,挺好玩的,于是简单的实现了下(没考虑低版本浏览器兼容问题) 先看看效果吧,如下图(录制gif软件有点渣,看起来卡卡的...) 这种效果可以由元素内嵌套canves实现,也可以由css3实现

  • 本文向大家介绍Android实现水波纹效果,包括了Android实现水波纹效果的使用技巧和注意事项,需要的朋友参考一下 一、效果   点击开始:   点击停止: 二、在MainActivity中 三、在activity_main中 四、在WaveView中: 五、在CircleImageView中: 六、在attrs中 以上所述是小编给大家介绍的Android实现水波纹效果,希望对大家有所帮助,如

  • 本文向大家介绍iOS实现波浪效果,包括了iOS实现波浪效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了iOS实现波浪效果的具体代码,供大家参考,具体内容如下 代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。