2014年4月2日水曜日

iOSアプリで簡単にインジケーターを表示する方法

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

プロジェクトに以下のフレームワークを追加

  • QuartzCore.framework


これだけで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』をオススメします。







0 件のコメント:

コメントを投稿