Takahiro Octopress Blog

-1から始める情弱プログラミング

iOS7か否かの判断は結構使いそう...

iOS7になってから表示が崩れる!!

さて、本日はAppleの発表会があり、iPad Airとか、iPad mini Retinaディスプレイとか新製品の情報が公開されました。筆者も早速、自宅に帰ってから最新Mac OSであるMarvericksをインストールしようと思ったのですが…きっと皆、同じ考えなんでしょう。インストール完了まで3〜4時間の表示から進みません(汗)
仕方がない!ブログを書こう!ってことで今回はiOS7になってから表示が崩れる!ってときの対応について書こうと思います。

xibファイルでの対応

これは以前も説明しましたが、ざっくりと復習します。多くの開発者がxibファイルで見た目をざっくり作っていることと思います。xibファイルで体裁の調整が完遂できるのであれば、ios6/7 deltasを利用すれば問題ありません。
大抵の場合、特に問題は起こらないはずですが、『うまくいかない箇所がある』または『xibファイルをそもそも使っていない』場合には頭を抱えることになるかもしれません。 では、そんなときにどうするか見て行きましょう。

iOSのバージョンを取得しよう

最も確実な方法は今までできていた書き方iOS7に適した書き方で分けてしまうことです。

1
float iOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];

このようにfloat型で取得すれば、iOS6なのか7なのかだけでなく、本日バージョンアップ可能になったiOS7.0.3という細かい数字まで取れます。
(まぁ今のところiOS7か否かの判断だけできればOKだと思いますけど)

1
2
3
4
5
6
// iOSのバージョンによって処理を分けたいファイルに以下を書く
if(iOSVersion < 7.0) {
  iOS6.x以前の処理
} else {
  iOS7.x以降の処理
}

これでOKです。

ただし、複数の画面で構成されるアプリの場合、何度もiOSVersionを定義するのは面倒なので、定数の定義用にAppDefine.hファイルを1枚作成しましょう。
で、下記を記載しましょう。

1
#define      iOSVerion       [[[UIDevice currentDevice] systemVersion] floatValue]

さあ、これで怖いものなんてないはず!じゃんじゃんiOS7対応していきましょう!!!
あ〜早くMarvericksのダウンロード終わらないかな笑

Comments