2014年2月2日日曜日

[iOS][Objctive-C]iOS7でステータスバーのレイヤが変更


どうも。

仕事で使っているデバッグ実機ではなく、
自分の私物iPhoneを機種変更して、
iPhone5s+iOS7になりました。
(それまでiPhone4s+iOS5)

で、
私物なんで、
自分の好きなようにアプリを入れていいので、
過去に在籍したプロジェクトのアプリを入れてみたんだが、
見事にステータスバーに画面部品が被っていた…。

これは、
iOS7ではステータスバーはコンテンツとは完全に独立したレイヤとして扱うことになった。
というのが明らかな原因。

さすがにこれはもうどうしようもなくて、
きちんと画面サイズに応じて部品の位置を計算している場合には、
iOSバージョンに合わせて計算方法を変えるしかないし、
Interface Builderでガッチリ作っている場合には、
Storyboardやxibを分岐するしかない…。
どちらにせよ、
バージョンを意識した実装をせざるを得ない。

今のプロジェクトでは、
ためらいなく後者を選んだ。

色々と理由はあるが、
Retina4inchを前提として構わなかった為、
そもそも画面サイズに応じて配置を計算する作り方はしていないこと。
であれば、
コピーしてiOS7用に合わせる方が、
ソースコードに及ぼす影響が少ないし、
結局、
iOS7の標準の「設定」のアプリなんか見てると、
UITableViewCellのLabel表示位置とか、
ポリシーみたいなのが変わっている部分もあって、
そういった細やかなiOS7らしさに対応出来るよう、
nibを分岐させた方がいいと考えた。

ちなみに、
問題の過去アプリについては、
自分自身がそれを引き継いですぐのタスクが、
iPhone5対応(Retina4inch対応)だった。
この時は、
nibを分岐させずに、
異なる画面サイズに対応出来るように、
計算して部品を配置するようにした。

これも結局は常駐仕事で、
アプリにはこれ以上やることもなく、
予算も取れないからと、
契約終了で常駐を終えていて、
当然アフターサポートとかないので、
自分にはもう無関係。


それでは。
ちゃお☆


まこぴー。