当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS实现手指点击出现波纹的效果

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

爱物秀场,偶像运动会tao受伤,王菁资料

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

具体的实现代码如下

首先监听控制器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开发者们能有所帮助,如果有疑问大家可以留言交流。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

  • ios uicollectionview实现横向滚动

    现在使用卡片效果的app很多,之前公司让实现一种卡片效果,就写了一篇关于实现卡片的文章。文章最后附有demo实现上我选择了使用uicollectionview ... [阅读全文]
  • iOS UICollectionView实现横向滑动

    本文实例为大家分享了ios uicollectionview实现横向滑动的具体代码,供大家参考,具体内容如下uicollectionview的横向滚动,目前我使... [阅读全文]
  • iOS13适配深色模式(Dark Mode)的实现

    iOS13适配深色模式(Dark Mode)的实现

    好像大概也许是一年前, mac os系统发布了深色模式外观, 看着挺刺激, 时至今日用着也还挺爽的终于, 随着iphone11等新手机的发售, ios 13系统... [阅读全文]
  • ios 使用xcode11 新建项目工程的步骤详解

    ios 使用xcode11 新建项目工程的步骤详解

    xcode11新建项目工程,新增了scenedelegate这个类,转而将原appdelegate负责的对ui生命周期的处理担子接了过来。故此可以理解为:ios... [阅读全文]
  • iOS实现转盘效果

    本文实例为大家分享了ios实现转盘效果的具体代码,供大家参考,具体内容如下demo下载地址: ios转盘效果功能:实现了常用的ios转盘效果,轮盘抽奖效果的实现... [阅读全文]
  • iOS开发实现转盘功能

    本文实例为大家分享了ios实现转盘功能的具体代码,供大家参考,具体内容如下今天给同学们讲解一下一个转盘选号的功能,直接上代码直接看viewcontroller#... [阅读全文]
  • iOS实现轮盘动态效果

    本文实例为大家分享了ios实现轮盘动态效果的具体代码,供大家参考,具体内容如下一个常用的绘图,主要用来打分之类的动画,效果如下。主要是ios的绘图和动画,本来想... [阅读全文]
  • iOS实现九宫格连线手势解锁

    本文实例为大家分享了ios实现九宫格连线手势解锁的具体代码,供大家参考,具体内容如下demo下载地址:效果图:核心代码://// clockview.m// 手... [阅读全文]
  • iOS实现卡片堆叠效果

    本文实例为大家分享了ios实现卡片堆叠效果的具体代码,供大家参考,具体内容如下如图,这就是最终效果。去年安卓5.0发布的时候,当我看到安卓全新的material... [阅读全文]
  • iOS利用余弦函数实现卡片浏览工具

    iOS利用余弦函数实现卡片浏览工具

    本文实例为大家分享了ios利用余弦函数实现卡片浏览工具的具体代码,供大家参考,具体内容如下一、实现效果通过拖拽屏幕实现卡片移动,左右两侧的卡片随着拖动变小,中间... [阅读全文]
验证码:
移动技术网