
Objective-C实现水波纹显示效果(附完整源码)
打开Xcode,创建一个新的Single View App项目。 在项目中添加一个新的ViewController类,选择UIViewController作为基础类。 项目创建:首先,创建一个新的Xcode项目,选择"Single View App"模板。 导入必要的框架:在ViewController.h中导入UIKit和Core Animation框架。 初始化视图:在viewDidLoad方法中创建一个UIView并设置其背景颜色。 创建波纹层:使用CAEmitterLayer创建动态波纹效果。 设置波纹属性:为波纹层设置颜色和阴影效果。 添加动画效果:通过CAAnimationGroup和CAKeyframeAnimation实现动态波纹效果。 启动动画:将动画组添加到波纹层,并启动动画效果。
发布日期:2025-04-26 08:13:48
浏览次数:3
分类:精选文章
本文共 3005 字,大约阅读时间需要 10 分钟。
在Objective-C中实现水波纹效果是一个非常有趣的任务,通过合理运用Core Animation和UIView的组合,可以轻松实现细腻的水波纹视觉效果。下面将详细介绍实现方法,并提供一个简单的代码示例。
项目创建
代码实现
在ViewController.h中添加以下代码:
#import@interface ViewController : UIViewController@end
在ViewController.m中添加以下代码:
#import#import @interface ViewController : UIViewController{ UIView *waveView; CAEmitterLayer *emitterLayer;}@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; self.view.backgroundColor = [UIColor lightGrayColor]; // 创建波纹层 waveView = [[UIView alloc] initWithFrame:self.view.bounds]; waveView.backgroundColor = [UIColor colorNamed:@"WaveColor"]; // 添加动画效果 emitterLayer = [CAEmitterLayer new]; CAEmitterCell *emitterCell = [CAEmitterCell new]; emitterCell.color = [UIColor colorNamed:@"WaveColor"]; emitterCell.emissionAngle = 0; emitterCell.emissionDuration = 2.0; [emitterLayer addEmitter:emitterCell]; // 设置波纹属性 waveView.layer.mask = emitterLayer; waveView.layer.shadowColor = [UIColor colorNamed:@"ShadowColor"]; waveView.layer.shadowOpacity = 0.5; waveView.layer.shadowRadius = 2.0; // 添加波纹效果 [self.view addSubview:waveView]; // 初始化动画 [self initializeAnimations];}- (void)initializeAnimations{ // 创建波纹动画 CAAnimationGroup *animationGroup = [CAAnimationGroup new]; // 水波纹动画 CAKeyframeAnimation *waveAnimation = [CAKeyframeAnimation new]; waveAnimation.keyFrames = [NSMutableArray new]; CAKeyframe *keyFrame = [CAKeyframe new]; keyFrame.type = kCAKeyframeLine; keyFrame.value = @0; [keyFrame setValue:@"M 0,0 L 100,0" forParameter @"path"]; [keyFrame setValue:@"0" forParameter @"time"]; [waveAnimation addKeyframe:keyFrame]; // 动态波纹动画 CAKeyframeAnimation *dynamicWaveAnimation = [CAKeyframeAnimation new]; dynamicWaveAnimation.keyFrames = [NSMutableArray new]; keyFrame = [CAKeyframe new]; keyFrame.type = kCAKeyframeLine; keyFrame.value = @0; [keyFrame setValue:@"M 100,0 L 0,0" forParameter @"path"]; [keyFrame setValue:@"0" forParameter @"time"]; [dynamicWaveAnimation addKeyframe:keyFrame]; // 添加动画组 [animationGroup addAnimation:waveAnimation]; [animationGroup addAnimation:dynamicWaveAnimation]; [animationGroup setDuration:10.0]; [animationGroup setTimingFunction:[CAMediaTimingFunction new]]; // 设置动画组 [waveView.layer addAnimation:animationGroup]; // 开始动画 [animationGroup start];}
代码解释
这个实现利用了Core Animation的强大功能,通过简单的关键帧动画和CAEmitterLayer,轻松实现了自然的水波纹效果。如果需要更复杂的波纹效果,可以通过调整keyframe的数量和动画参数来实现不同的波纹风格。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月15日 03时11分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!