アクティビティインジケーターを制御する「DCActivityIndicator」クラスを作成しました。アクティビティインジケーターのアニメーション再生/停止/再生状況の取得を行えます。
下記よりサンプルとソースコードのダウンロードが行えます。
ダウンロード
使用方法
アクティビティインジケーターのアニメーション再生
1
2
3
4
| [DCActivityIndicator start:self.view
center:self.view.center
styleId:1
hidesWhenStopped:YES];
|
アクティビティインジケーターのアニメーション停止
1
| [DCActivityIndicator stop];
|
アクティビティインジケーターのアニメーション再生状況取得
1
2
3
4
| if ([DCActivityIndicator isAnimating]) {
//アニメーション再生中の処理
}
|
ソースコード
DCActivityIndicator.h
1
2
3
4
5
6
7
8
9
10
11
12
| #import <UIKit/UIKit.h>
#define INDICATOR_LARGE_SIZE 50
#define INDICATOR_SMALL_SIZE 20
@interface DCActivityIndicator : UIActivityIndicatorView
+ (void)start:(id)view center:(CGPoint)center styleId:(NSInteger)styleId hidesWhenStopped:(BOOL)hidesWhenStopped;
+ (void)stop;
+ (BOOL)isAnimating;
@end
|
DCActivityIndicator.m
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
| #import "DCActivityIndicator.h"
@implementation DCActivityIndicator
static UIActivityIndicatorView *indicator_;
typedef enum styles : NSInteger {
GRAY = 1,
WHITE = 2,
WHITE_LARGE = 3
} styles;
//アニメーション開始
+ (void)start:(id)view center:(CGPoint)center styleId:(NSInteger)styleId hidesWhenStopped:(BOOL)hidesWhenStopped
{
//インジケーター初期化
DCActivityIndicator.indicator = [[UIActivityIndicatorView alloc] init];
//スタイルを設定
switch (styleId) {
case GRAY:
DCActivityIndicator.indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
break;
case WHITE:
DCActivityIndicator.indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
break;
case WHITE_LARGE:
DCActivityIndicator.indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
break;
}
//スタイルに応じて寸法変更
if (DCActivityIndicator.indicator.activityIndicatorViewStyle == UIActivityIndicatorViewStyleWhiteLarge) {
DCActivityIndicator.indicator.frame = CGRectMake(0, 0, INDICATOR_LARGE_SIZE, INDICATOR_LARGE_SIZE);
} else {
DCActivityIndicator.indicator.frame = CGRectMake(0, 0, INDICATOR_SMALL_SIZE, INDICATOR_SMALL_SIZE);
}
//座標をセンターに指定
DCActivityIndicator.indicator.center = center;
//停止した時に隠れるよう設定
DCActivityIndicator.indicator.hidesWhenStopped = hidesWhenStopped;
//インジケーターアニメーション開始
[DCActivityIndicator.indicator startAnimating];
//画面に追加
[view addSubview:DCActivityIndicator.indicator];
}
//アニメーション停止
+ (void)stop
{
[DCActivityIndicator.indicator stopAnimating];
}
//アニメーション中であるか
+ (BOOL)isAnimating
{
return [DCActivityIndicator.indicator isAnimating];
}
+ (void)setIndicator:(UIActivityIndicatorView *)indicator
{
indicator_ = indicator;
}
+ (UIActivityIndicatorView *)indicator
{
return indicator_;
}
@end
|
サンプルソースコード
ViewController.h
1
2
3
4
5
6
7
8
9
| #import <UIKit/UIKit.h>
#import "DCActivityIndicator.h"
@interface ViewController : UIViewController
- (IBAction)startEvent:(id)sender;
- (IBAction)stopEvent:(id)sender;
@end
|
ViewController.m
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
| #import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
typedef enum styles : NSInteger {
GRAY = 1,
WHITE = 2,
WHITE_LARGE = 3
} styles;
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)startEvent:(id)sender
{
if ([DCActivityIndicator isAnimating]) {
return;
}
[DCActivityIndicator start:self.view
center:self.view.center
styleId:GRAY
hidesWhenStopped:YES];
}
- (IBAction)stopEvent:(id)sender
{
if (![DCActivityIndicator isAnimating]) {
return;
}
[DCActivityIndicator stop];
}
@end
|
お薦めの参考書
詳解 Swift 改訂版
Swiftのかなり入り込んだところまで解説しながら、実践コードを多数収録しています。応用本になりますので、入門書を読み終えて中級者から上級者に差し掛かる時に読むことをお勧めします。読み物としてだけではなくリファレンスとしても使用できます。