甘いものが好きです

iOS App開発時に感じた疑問や課題、その他の雑感などを書いていきます。

iOS 5.0ではUIActivityIndicatorViewが表示されなくなる場合があることに注意

iOS 5.0ではUIActivityIndicatorViewが表示されなくなることがある

UIActivityIndicatorViewを使用しているプロジェクトをXcode 4.1以前で作成し、そのプロジェクトをXcode 4.2でiOS 5.0向けにビルド・実行すると、UIActivityIndicatorViewが表示されないことがある。調査してみると、UIActivityIndicatorViewクラスのプロパティにiOS 5.0でcolorプロパティが追加されたことと、UIActivityIndicatorViewの影がなくなったことが、この件に影響していることが明らかになった。

iOS 5.0ではUIActivityIndicatorViewクラスにcolorプロパティが追加されている

xibファイルによりUI設計を行なっている場合には状況を確認しやすい。Xcode 4.2でxibファイル内のUIActivityIndicatorViewを選択し、Attributes Inspectorを表示すると、一番上の「Activity Indicator View」セクション内に、Xcode 4.1ではみられなかった「Color」という項目が存在しているのがわかる。この「Color」が、iOS 5.0でUIActivityIndicatorViewクラスに追加されたcolorプロパティに対応する。

Xcode 4.1で作成したプロジェクトをXcode 4.2で開いただけの段階では、この「Color」の項目に設定されている値は「Default」になっているはずである。「Default」で設定される色は「Color」のひとつ上の項目「Style」(Large White、White、Grayから選択)によって決定される。例えば、「Style」に「Large White」が設定されている場合には、「Color」には白色が適用される。iOS 4.3またはそれ以前のiOSのバージョンでは、「Style」に対応する色が固定設定されているというわけである。

iOS 4.3以前とiOS 5.0のUIActivityIndicaotrViewは影の有無に違いがある

iOS 5.0でUIActivityIndicatorViewが表示されなくなるのは、次の2つの色が同じになる場合である。

  • UIActivityIndicatorViewの色
  • UIActivityIndicatorViewの下に配置されたViewまたはWindowの背景色

iOS 4.3またはそれより前のバージョンではUIActivityIndicatorViewに影がついているので、これらの2つが同じであっても、UIAcitvityIndicatorViewが見える。ところが、iOS 5.0では、UIActivityIndicatorViewに影がついていないので、下に配置されているViewまたはWindowと判別することができなくなる。