iOSアプリでデータの少し時間のかかる処理(データの読み込みなど)をするときにインジケーターを表示したくなります。
ちなみにインジケーターとは以下のようなグルグルするヤツです。
標準でインジケーターを表示するやり方は以下のようになります。
UIActivityIndicatorViewを使用
==============================================
UIActivityIndicatorView *ai = [[UIActivityIndicatorView alloc] init];
ai.frame = CGRectMake(0, 0, 50, 50);
ai.center = self.view.center;
ai.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
[self.view addSubview:ai];
[ai startAnimating];
==============================================
ただ、このやり方はいまいち使い勝手がよくありません。
そこで、標準以外のライブラリを使ってみました。
SVProgressHUDを使用
導入方法はとても簡単です。
ライブラリを以下よりダウンロード
ライブラリから以下のファイルをプロジェクトに追加
- SVProgressHUD.h
- SVProgressHUD.m
プロジェクトに以下のフレームワークを追加
これだけでOK、あとは以下のように書くだけ
==============================================
#import "SVProgressHUD.h"
//インジケーターを表示
[SVProgressHUD show];
//インジケーターを消す
[SVProgressHUD dismiss];
==============================================
ただ、このライブラリはiOS6だとなぜか落ちてしまったり、ARCではない環境では上手く動かなかったりして、私の環境では使えませんでした。
MBProgressHUDを使用
こちらも導入は簡単です。
ライブラリを以下よりダウンロード
ライブラリから以下のファイルをプロジェクトに追加
- MBProgressHUD.h
- MBProgressHUD.m
あとは以下のように書くだけ
==============================================
#import "MBProgressHUD.h"
//インジケーターを表示
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
//インジケーターを消す
[MBProgressHUD hideHUDForView:self.view animated:YES];
==============================================
こちらのライブラリはiOS6でも非ARC環境でもOKでした。
また、以下のように背景の色を変えたり、テキストを表示できたり使い勝手もよさそうです。
==============================================
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
//背景
hud.dimBackground = YES;
//テキスト
[hud setLabelText:@"Loading..."];
==============================================
まとめ
インジケーターを表示するなら『MBProgressHUD』をオススメします。