#import "VWWWaterView.h"
@interfaceVWWWaterView ()
{
UIColor *_currentWaterColor;
float _currentLinePointY;///水的top。
float a;///水上下抖动的幅度。。。
float b;
BOOL jia;
}
@end
@implementation VWWWaterView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[selfsetBackgroundColor:[UIColorclearColor]];
a = 1.5;
b = 0;
jia = NO;
_currentWaterColor = [UIColorblueColor];
_currentLinePointY = 111;
[NSTimerscheduledTimerWithTimeInterval:0.02target:selfselector:@selector(animateWave) userInfo:nilrepeats:YES];
}
returnself;
}
-(void)animateWave
{
if (jia) {
a += 0.01;
}else{
a -= 0.01;
}
if (a<=1) {
jia = YES;
}
if (a>=1.5) {
jia = NO;
}
b+=0.1;
[selfsetNeedsDisplay];
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGMutablePathRef path = CGPathCreateMutable();
//画水
CGContextSetLineWidth(context, 1);
CGContextSetFillColorWithColor(context, [_currentWaterColorCGColor]);
float y=_currentLinePointY;
CGPathMoveToPoint(path, NULL, 0, y);
for(float x=0;x<=320;x++){
y= a * sin( x/180*M_PI + 4*b/M_PI ) * 5 + _currentLinePointY;
CGPathAddLineToPoint(path, nil, x, y);
}
CGPathAddLineToPoint(path, nil, 320, rect.size.height);
CGPathAddLineToPoint(path, nil, 0, rect.size.height);
CGPathAddLineToPoint(path, nil, 0, _currentLinePointY);
CGContextAddPath(context, path);
CGContextFillPath(context);
CGContextDrawPath(context, kCGPathStroke);
CGPathRelease(path);
}
相关推荐
本文将深入探讨“flash水波纹制作器”这一特定工具,特别是关于如何利用SqR来生成逼真的水波纹动画。 水波纹效果在视觉设计中是一种常见的动态元素,可以为作品增添生动感和真实感。Flash水波纹制作器,如SqR,是专...
在本文中,我们将深入探讨如何使用Qt5框架中的自绘技术,特别是利用QPainter类来实现一个具有水波纹效果的QProgressBar。首先,我们来看看这个项目的核心元素和原理。 Qt是一个跨平台的应用程序开发框架,它提供了...
在本文中,我们将深入探讨C#编程语言中的水波纹特效,主要关注WinForm和WPF两个平台的应用。水波纹特效是一种常见的视觉效果,它能够为用户界面增添动态感和吸引力,通常用于按钮点击、通知提示等场景。C#作为.NET...
"Android水波纹过渡动画"就是一个专注于实现这种效果的实例,它结合了技术与艺术,使得用户界面更加生动有趣。在这个项目中,我们将深入探讨如何创建一个水波纹特效,并了解其背后的技术原理。 水波纹特效通常指的...
Swift-WaterRippleView是一个专为iOS开发设计的开源库,它允许开发者在应用程序中实现生动逼真的水波纹效果。这个视图组件基于Swift编程语言,为用户提供了一种便捷的方式来添加动态水波纹动画,使得用户界面更具...
在Unity游戏引擎中,2D涟漪或水波纹特效是一种常见的视觉效果,常用于模拟水面、玻璃或其他材质的动态表现。实现这种效果通常涉及到shader技术,它允许开发者自定义物体表面的渲染方式,创造出各种复杂的视觉效果。...
在本文中,我们将深入探讨如何在Cocos2d-x 3.x框架中实现水波纹效果,这是一种在游戏和图形应用中常见的动态视觉特效。Cocos2d-x是一个开源的游戏开发框架,支持多种编程语言,包括C++,并且在3.x版本中引入了许多...
【标题】"WEB高德地图实现水波纹扩散"是一个技术实践项目,旨在展示如何在网页上利用高德地图API创建动态的水波纹效果,同时确保这种效果能够随着地图的缩放而自适应调整。这个Dome(演示示例)提供了一种创新的方式...
- **图形库**:开发者可以使用像OpenGL、DirectX或现代的跨平台库如Qt、Unity等,这些库提供了丰富的图形绘制和动画功能,能方便地创建出水波纹效果。 - **编程语言**:常见的编程语言如C++、C#、Java和Python都有...
"Android点击出现水波纹效果"就是一种常见的交互设计,它模仿了水面被触碰时产生的涟漪扩散效果,使得用户操作更加生动有趣。这个效果通常应用于按钮、列表项或其他可点击的UI元素上,以提示用户他们的点击已被系统...
本教程将深入探讨如何实现一个水波纹效果,这种效果以中心为起点,向外扩散,同时伴随着颜色的渐变。水波纹动画是一种视觉上吸引人的动态效果,常用于按钮点击、触摸反馈或者界面过渡等场景。 首先,我们需要理解...
在使用百度地图API进行开发时,有时候我们希望在地图上添加一些独特的视觉元素,比如水波纹或雷达效果,以增强用户体验或者突出某些特定信息。本文将深入探讨如何利用百度地图API实现自定义的水波纹(雷达)效果覆盖...
为了提升用户体验,许多开发者会为按钮添加各种视觉效果,其中“水波纹”特效是一种非常吸引人的设计。这种特效在用户点击按钮时,会产生如同水面波动般的动画效果,既美观又具有交互性。 水波纹效果主要依赖于...
在这个"opengl 实现水波纹"的项目中,我们关注的是如何利用OpenGL来创建动态的、逼真的水面波动效果。这个程序的核心是模拟水面的物理特性,如波动、反射和折射,以创造出视觉上的水波纹。 在OpenGL中实现水波纹...
本文将详细讲解如何实现“Viewpager切换界面导航栏水波纹动画效果”,这是一种模仿水波纹扩散的动画效果,常用于顶部导航栏,为用户带来独特的交互体验。 首先,我们需要理解动画在Android中的实现方式。Android...
在Android开发中,为了提升用户体验和界面的美观性,开发者经常使用各种视觉特效,其中“水波纹”(Ripple)效果就是一种常见的交互反馈设计。水波纹按钮特效不仅能在用户点击时提供动态的视觉反馈,还能为应用程序...
在本文中,我们将深入探讨如何使用three.js库创建一个基于Canvas的立体水波纹效果。three.js是一个流行的JavaScript 3D库,它使得在Web浏览器中进行三维图形编程变得简单。我们将讨论涉及到的关键技术和算法,以及...
水波纹动态屏保是一种流行的桌面美化工具,它为用户提供了独特的视觉体验,将电脑屏幕在待机状态下转变为逼真的水波纹效果。这种动态屏保不仅能够保护显示器,防止长时间静止图像导致的烧屏现象,还能为工作或休闲...
Flex水波纹效果项目是一种基于Adobe Flex技术实现的动态视觉效果,主要应用于用户界面设计,为用户提供更加生动、直观的交互体验。Flex是基于ActionScript 3.0和MXML的开源框架,它允许开发者创建丰富的互联网应用...
然后,以这个位置为圆心,绘制一个半透明的圆形,并让它逐渐扩大,形成向外扩散的“水波纹”。这个过程通常伴随着颜色的淡化和圆形的消失,直到最终完全透明,整个动画流畅自然,给人一种沉浸式的体验。 实现这个...