アプリでグルグル画像(indicator)をIBを使わずに簡単に表示させる方法

未だにInterface Builderが使い慣れていないので、objective-cのみで
表示をさせる。

UIActivityIndicatorView を使う

UIActivityIndicatorView クラスを subview に追加して、startAnimating するだけ。

サンプル

@interface MyView : UIView
- (void)stop;
@end

#define INDICATOR_TAG 100
@implementation MyView
- (MyView *)init {
    // 大きさを指定してインスタンスを生成
    UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
    // 画面の真ん中の表示するように設定
    [activityIndicator setCenter:CGPointMake(160.0f, 240.0f)];
    // 色を設定
    [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
    // あとで取り出せるようにタグを設定
    activityIndicator.tag = INDICATOR_TAG;

    // subview に追加する
    [self addSubview:activityIndicator];
    // グルグルスタート
    [activityIndicator startAnimating];
    // 解放
    [activityIndicator release];
}

// 何か処理を行って、準備できたらこれを呼ぶ
- (void)stop {
    // タグ指定で追加したUIActivityIndicatorViewを取得する
    UIActivityIndicatorView *activityIndicator = (UIActivityIndicatorView *)[[self superview] viewWithTag:INDICATOR_TAG];
    // グルグルストップ
    [activityIndicator stopAnimating];
    // 解放
    [activityIndicator release];
}
@end

適当な解説

クラスインスタンスとして変数を用意してもいいんだけど、ずっと必要なわけではないので
一時変数に格納し、止めるときはタグを利用してターゲットを取得するようにする。

setActivityIndicatorViewStyle に設定できるのは以下。ぐるぐるの色を設定する。

typedef enum {
UIActivityIndicatorViewStyleWhiteLarge,
UIActivityIndicatorViewStyleWhite,
UIActivityIndicatorViewStyleGray,
} UIActivityIndicatorViewStyle;

UIActivityIndicatorView は、startAnimating をすると見えるようになり
逆に stopAnimating をすると見えなくなる。

グルグルしつつ Loading... みたいな文字はどうやってだすのか不明。
たぶんこれはIBでやればいけるんだろうなぁと思ってる。