SVProgressHUDでかっこよくLoading(読み込み中)表示
iOSアプリでデータ取得中やWebページの読み込み中に処理中であることを示すためにUIActivityIndicatorViewを使用することが多いと思いますが、もう少しかっこよくスタイリッシュに表示したい場合にSVProgressHUDというOSSが便利だったので紹介したいと思います。
同じような機能を持ったライブラリにMBProgressHUDがありますが、こちらよりもシンプルで使いやすいです。ライセンスはMITライセンスです。ちなみにHUDとはUIKitに含まれているUIProgressHUDクラスのことですが、こちらはUndocumentedな非公開クラスのため、おそらくリジェクト対象になります。
インストール
- SVProgressHUD.h/mをプロジェクトに追加する
- プロジェクトにQuartzCore.frameworkを追加する
使い方
基本的には、HUDを表示させたい時に[SVProgressHUD show]、非表示にしたいときに[SVProgressHUD dissmiss]のようにSVProgressHUDのクラスメソッドを呼ぶだけです。
インジケータ付きHUD表示メソッド。
+ (void)show; + (void)showWithStatus:(NSString*)status; + (void)showWithStatus:(NSString*)status maskType:(SVProgressHUDMaskType)maskType; + (void)showWithMaskType:(SVProgressHUDMaskType)maskType;
非表示系メソッド。
+ (void)dismiss; + (void)dismissWithSuccess:(NSString*)successString; + (void)dismissWithSuccess:(NSString*)successString afterDelay:(NSTimeInterval)seconds; + (void)dismissWithError:(NSString*)errorString; + (void)dismissWithError:(NSString*)errorString afterDelay:(NSTimeInterval)seconds;
maskTypeでHUD表示時の挙動(ユーザ操作、背景)を変更することができます。
enum { SVProgressHUDMaskTypeNone = 1, // ユーザ操作可(デフォルト) SVProgressHUDMaskTypeClear, // ユーザ操作不可 SVProgressHUDMaskTypeBlack, // ユーザ操作不可、背景が薄暗くなる SVProgressHUDMaskTypeGradient // ユーザ操作不可、alertViewっぽいグラデーションで背景が薄暗くなる };
確認/完了メッセージを表示するには以下のメソッドを使用します。
+ (void)showSuccessWithStatus:(NSString*)string; + (void)showSuccessWithStatus:(NSString *)string duration:(NSTimeInterval)duration; + (void)showErrorWithStatus:(NSString *)string; + (void)showErrorWithStatus:(NSString *)string duration:(NSTimeInterval)duration;
HUDの表示中にメッセージを変更したい場合は、以下のメソッドを使用します。HUDのメッセージを段階的に変えたいときなどに便利です。
+ (void)setStatus:(NSString*)string; // change the HUD loading status while it's showing
参考
最後のMRC(手動参照カウント)ブランチ
https://github.com/samvermette/SVProgressHUD/tree/last-mrc