Hatena::ブログ(Diary)

もっと、みやびちゃんぷりちー! このページをアンテナに追加 RSSフィード Twitter

この日記のはてなブックマーク数

2011-10-18

iOS 5からのUIActivityIndicatorViewの変更

iOS 5からUIActivityIndicatorViewのサイズ指定で変更があったようです。

UIActivityIndicatorViewStyleでactivityIndicatorViewStyleを設定した際は以下のサイトで書かれている通りのサイズで従来と変わりません。

Good night, Posterous

  • UIActivityIndicatorViewStyleWhite: 21x21 px
  • UIActivityIndicatorViewStyleGray: 21x21 px
  • UIActivityIndicatorViewStyleWhiteLarge: 36x36 px

但し、上記以外で任意のサイズにする際、iOS 4までは以下のようなコードで良かったのですが、

UIActivityIndicatorView* indicator = [[UIActivityIndicatorView alloc] initWithFrame:self.view.bounds] autorelease];
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
indicator.frame = CGRectMake(0, 0, 50, 50);

上記コードですと、iOS 5ではインジケータのサイズがUIActivityIndicatorViewStyleWhiteLargeのままになってしまいます。

解決策としては以下のサイトを参考にすると解決します。

no title

UIActivityIndicatorView* indicator = [[UIActivityIndicatorView alloc] initWithFrame:self.view.bounds] autorelease];
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
[indicator.layer setValue:[NSNumber numberWithFloat:1.39f] forKeyPath:@"transform.scale"]; // 50pxに近くするため

但し、このコードですと、iOS 4で走らせた時のインジケータの表示が大きくなりすぎる問題を抱えてしまいます。

ですので、iOS 5以降か否かでインジケータのサイズ指定を変えてやります、

UIActivityIndicatorView* indicator = [[UIActivityIndicatorView alloc] initWithFrame:self.view.bounds] autorelease];
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 
if (version < 5)
    indicator.frame = CGRectMake(0, 0, 50, 50);
else
    [indicator.layer setValue:[NSNumber numberWithFloat:1.39f] forKeyPath:@"transform.scale"];

こうすれば、iOS 5以降と前でのインジケータの任意サイズ指定が可能となります。

サンプルは後程。

追伸

来月からはObjective-Cコードを書く機会が減りそうです。

詳細は後日。

NewbieNewbie 2012/06/06 18:00 助かりまして、ありがとうございます。
但し、「iPad2」で10倍に拡大するとindicatorの画像がきれいではありません。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/miyabipretty/20111018/1318894056
リンク元
Connection: close