移動経路 - iOSのパーティクルエフェクトの研究では、-084ノート

https://blog.csdn.net/qiwenmingshiwo/article/details/75806637

 

移動パーティクルエフェクトのパス
説明
1つのエフェクト
2解析工程
の2つのコード
1 VCViewh
2 VCViewm
。3 ViewControllermの
移動の経路-パーティクル効果
説明
1.1エフェクト
図結果。

 

1.2分析ステップ
我々は、上記の効果を必要とするには、以下のステップに従って操作することができます。

最初のステップ:私たちはこの効果をサポートするためにビューを作成する必要があります(VCView)

ステップ2:私たちは、パスを作成するためのジェスチャーを追加するためのジェスチャーの動きを記録するために、そして私たちの描画機能を実現する必要があります

第三段階:複製層で使用される粒子を添加します

このビューでは、我々、複製層をサポートする必要がある(VCViewは)層の層をコピーする必要があります

+(クラス)layerClass {
//複製層の
リターン[CAReplicatorLayerクラス];
}
1
2
3。
4。
粒子を作成するために、粒子は、複製層に添加しました

//添加粒子
のCALayer * dotL = [CALayerの層]。
dotL.frame = CGRectMake(-20、0、20、20)。
dotL.backgroundColor = [UIColor redColor] .CGColor。
self.dotLayer = dotL。
[addSublayer self.layer:dotL]。
1
2
3
4
5
6
复制粒子

//コピー粒子
CAReplicatorLayer REPL = *(* CAReplicatorLayer)self.layer;
repL.instanceCount = 30;
repL.instanceDelay = 0.2;
1
2
3。
4。
ステップ4:アニメーションを追加

ステップ5:再描画機能を実装

注意:私たちは、カスタムVCViewを使用しています

 

第二に、コード
2.1 VCView.h
//
// VCView.h
// 03_UIView77_パーティクルエフェクト1
//
//チー文明17/7/22 ONによって作成されます。
//著作権©2017インディアンチー文明。すべての権利を保有。
/ /

#import <UIKitの/ UIKit.h>

VCViewの@interface:UIViewのは
//アニメーションを開始
- (ボイド)を起動し;
//は再描画
- (ボイド)REDRAW;
@end
。1
2
3
4
5
6
7
8
9
10
11
12は、
13である
14
15
16
17。
2.2 VCView.m
//
VCView.m //
// 03_UIView77_パーティクルエフェクト1
//
//チー文明17/7/22 ONによって作成されます。
//著作権©2017インディアンチー文明。すべての権利を保有。
//

#importを "VCView.h"

@interface VCView()

@property(非アトミック、強い)UIBezierPath *路と
@property(アトミック、強い)のCALayer * dotLayer。

@終わり

@implementation VCView

+(クラス)layerClass {
//复制层
[CAReplicatorLayerクラス]を返します。
}

//アニメーションを開始
- (ボイド)を起動{
//フレームアニメーション作成
CAKeyframeAnimationを* Animの= [CAKeyframeAnimationアニメ];
anim.keyPath = @ "位置";
anim.path = self.path.CGPath;
anim.repeatCount = MAXFLOAT。
Animの。= 6 .duration;
[self.dotLayer addAnimation:AnimのforKey:なし];
}

//再描画
- (ボイド){REDRAW
映画削除//
[self.dotLayer removeAllAnimations];
//クリアパス
[self.pathはremoveAllPoints];
//再描画
[自己setNeedsDisplayを];
}

- (ボイド)awakeFromNib {
//添加手势
UIPanGestureRecognizer *パン= [[UIPanGestureRecognizer ALLOC] initWithTarget:自己アクション:@selector(:) PAN]。
[自己addGestureRecognizer:パン];

//添加粒子
のCALayer * dotL = [CALayerの層]。
dotL.frame = CGRectMake(-20、0、20、20)。
dotL.backgroundColor = [UIColor redColor] .CGColor。
self.dotLayer = dotL。
[addSublayer self.layer:dotL]。

//复制粒子
CAReplicatorLayer * REPL =(CAReplicatorLayer *)self.layer。
repL.instanceCount = 30。
repL.instanceDelay = 0.2。

//パス作成
self.pathを= [UIBezierPath bezierPath];
}

- (ボイド)PAN:(UIPanGestureRecognizer *)PAN {
//現在の点又はフィンガー
するCGPoint curentP = [パンlocationInView:自己 ]。

//ジェスチャー始点に移動する
場合には(pan.state == UIGestureRecognizerStateBegan){
[self.pathのmoveToPoint:curentP];
}そうIF(pan.state == UIGestureRecognizerStateChanged){
//追加点
[self.pathのaddLineToPoint :curentP];
//再描画
[自己setNeedsDisplay];
}
}

- (ボイド)のdrawRect:(CGRect)RECT {
[self.pathストローク]。
}

@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57である
58
59
60
61である
62は
63である
64
65
66
67
68
69
70
71であり、
72
73である
74
75
76
77
78
79
80
81
82
83
84
85
86
87
2.3 ViewController.m
//
// ViewController.m
// 03_UIView77_粒子エフェクト1
/ /
//チー文明17/7/22 ONによって作成されます。
//著作権©2017インディアンチー文明。すべての権利を保有。
//

#importを"ViewController.h"
の#import "VCView.h"

@interface ViewControllerを()
@property(強い、非アトミック)IBOutlet VCView * vcView。

@終わり

@implementationのViewController

- (ボイド)のviewDidLoad {
[スーパーのviewDidLoad]。
}
- (IBAction)開始:(ID)を送信元{
[開始self.vcView]。
}
- (IBAction)再描画:(ID)を送信元{
[self.vcView再描画]。
}

@end
----------------
免責事項:この記事はCSDNブロガー「怒っているボブ」のオリジナル記事で、CC BY-SA 4.0の著作権契約に従って、再現し、オリジナルのソースを添付してくださいリンクとこの文。
オリジナルリンクします。https://blog.csdn.net/qiwenmingshiwo/article/details/75806637

おすすめ

転載: www.cnblogs.com/itlover2013/p/11426355.html
おすすめ