iOS学习笔记-084.粒子效果——路径移动
来源:互联网 发布:淘宝美德威萨克斯 编辑:程序博客网 时间:2024/05/18 15:23
- 粒子效果路径移动
- 一说明
- 1 效果
- 2 步骤分析
- 二代码
- 1 VCViewh
- 2 VCViewm
- 3 ViewControllerm
- 一说明
粒子效果——路径移动
一、说明
1.1 效果
效果如图
1.2 步骤分析
我们需要上面的效果,可以按照以下的步骤来操作:
第一步:我们需要创建一个View来支持我们的这种效果(VCView)
第二步:我们需要添加一个手势,创建一个路径,来记录这个手势的移动,并实现我们的绘制功能
第三步:使用复制层来添加粒子
需要支持复制层的功能,那么我们的这个View(VCView)的layer应该是复制层
+(Class)layerClass{ //复制层 return [CAReplicatorLayer class];}
创建一个粒子,并且把粒子添加到复制层
//添加粒子 CALayer *dotL = [CALayer layer]; dotL.frame = CGRectMake(-20, 0, 20, 20); dotL.backgroundColor = [UIColor redColor].CGColor; self.dotLayer = dotL; [self.layer addSublayer:dotL];
复制粒子
//复制粒子 CAReplicatorLayer *repL = (CAReplicatorLayer*)self.layer; repL.instanceCount = 30; repL.instanceDelay = 0.2;
第四步:添加动画
第五步:实现重绘制功能
注意:我们使用的是自定义的VCView
二、代码
2.1 VCView.h
//// VCView.h// 03_UIView77_粒子效果1//// Created by 杞文明 on 17/7/22.// Copyright © 2017年 杞文明. All rights reserved.//#import <UIKit/UIKit.h>@interface VCView : UIView//开始动画- (void)start;//重绘- (void)reDraw;@end
2.2 VCView.m
//// VCView.m// 03_UIView77_粒子效果1//// Created by 杞文明 on 17/7/22.// Copyright © 2017年 杞文明. All rights reserved.//#import "VCView.h"@interface VCView()@property(nonatomic,strong)UIBezierPath *path;@property(nonatomic,strong)CALayer *dotLayer;@end@implementation VCView+(Class)layerClass{ //复制层 return [CAReplicatorLayer class];}//开始动画- (void)start{ //创建帧动画 CAKeyframeAnimation *anim = [CAKeyframeAnimation animation]; anim.keyPath = @"position"; anim.path = self.path.CGPath; anim.repeatCount = MAXFLOAT; anim.duration = 6; [self.dotLayer addAnimation:anim forKey:nil];}//重绘- (void)reDraw{ //删除所有动画 [self.dotLayer removeAllAnimations]; //清空路径 [self.path removeAllPoints]; //重绘 [self setNeedsDisplay];}-(void)awakeFromNib{ //添加手势 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)]; [self addGestureRecognizer:pan]; //添加粒子 CALayer *dotL = [CALayer layer]; dotL.frame = CGRectMake(-20, 0, 20, 20); dotL.backgroundColor = [UIColor redColor].CGColor; self.dotLayer = dotL; [self.layer addSublayer:dotL]; //复制粒子 CAReplicatorLayer *repL = (CAReplicatorLayer*)self.layer; repL.instanceCount = 30; repL.instanceDelay = 0.2; //创建路径 self.path = [UIBezierPath bezierPath];}-(void)pan:(UIPanGestureRecognizer *)pan{ //或者手指当前的点 CGPoint curentP = [pan locationInView:self]; //手势开始,移动到开始的点 if(pan.state == UIGestureRecognizerStateBegan){ [self.path moveToPoint:curentP]; }else if (pan.state == UIGestureRecognizerStateChanged){ //添加点 [self.path addLineToPoint:curentP]; //重绘 [self setNeedsDisplay]; }}-(void)drawRect:(CGRect)rect{ [self.path stroke];}@end
2.3 ViewController.m
//// ViewController.m// 03_UIView77_粒子效果1//// Created by 杞文明 on 17/7/22.// Copyright © 2017年 杞文明. All rights reserved.//#import "ViewController.h"#import "VCView.h"@interface ViewController ()@property (strong, nonatomic) IBOutlet VCView *vcView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];}- (IBAction)start:(id)sender { [self.vcView start];}- (IBAction)reDraw:(id)sender { [self.vcView reDraw];}@end
阅读全文
0 0
- iOS学习笔记-084.粒子效果——路径移动
- iOS学习笔记-085.粒子效果——QQ拖动效果
- IOS cocos2d学习笔记-<六>CCParticalSystem粒子效果
- iOS粒子效果模拟器—UIEffectDesigner
- IOS学习之核心动画-粒子效果
- unity学习笔记—一部分粒子系统
- iOS开发 - 粒子效果
- iOS 粒子效果
- iOS 粒子效果
- Unity3D学习(8)——粒子效果的实现
- Swift——粒子效果
- Unity3D学习笔记——组件之Effects(效果/特效)——Particle System(粒子系统)
- cocos2d学习笔记第四章 粒子效果及座标系
- Unity学习笔记(4)-----粒子效果的实现
- NGUI学习笔记(七):UIPanel剪裁粒子效果
- iOS 粒子效果 CAEmitterCell CAEmitterLayer
- ios粒子效果CAEmitteCell CAEmitterLayer
- iOS动画之粒子效果
- iframe上左右布局
- 线性插值法
- 关注民生民情——华北水利水电大学“情艺”国情社情调查
- 对Spark中Broadcast的理解
- OpenGL 常用 API
- iOS学习笔记-084.粒子效果——路径移动
- 定时执行任务的3种实现方法:
- C++之返回值为reference引用的情况---补充(6)《Effective C++》
- Python起步之图形编程(一)
- 循环神经网络
- 笔记2:结构体的概述与使用
- 【脚本语言系列】关于Python基础知识装饰器,你需要知道的事
- 血管疼#6
- 深入学习consul