iOS8で画面サイズを取得した時の仕様が変更されました
こんにちは、プログラマのLFです。
めっきり寒くなってきましたね。
帰宅したあと、飼い猫を膝に載せてコーヒーを楽しむ今日この頃です。
ただ飼い猫は7キロあるので15分もすれば
足がしびれて動けなくなるのですが
まぁそれも猫を飼う楽しみと思えば愛しさが増すというものです。
さて。
現在iOS4時代から脈々と改修されてきたアプリを
iOS8 SDKに対応させるための調査を行っています。
どこまで直すべきか悩ましいところですが、それは置いておいて。
iOS8 SDKで画面サイズを取得した時の挙動が変更されました。
具体的にはデバイスの縦横のサイズが常に固定で取得できた仕様から
回転していたときは回転時の縦横サイズを取得する仕様に変更されました。
わかりづらいですね。
簡単にいうと、画面サイズが5インチの場合、
いままではデバイスを横にしていた際の縦サイズが568pxと取得していたのに対して
iOS8 SDKでは縦サイズを320pxと取得します。
つまり、横方向で使用する処理を実装していたアプリは
修正が必要になるということですね。
ひとまず私は下記のようにコードを書き換えて対応中です。
1 |
// if (568.0f == CGRectGetHeight([UIScreen mainScreen].bounds)) {<br />if (568.0f == CGRectGetWidth([UIScreen mainScreen].bounds)) { |
本来であれば根本的に対応すべきなのでしょうが
いろいろ差し迫っていることもあり、今回はこれでいこうと思います。
また気づいたことがあったら記事にしようと思います。
参考サイト:
Is [UIScreen mainScreen].bounds.size becoming orientation-dependent in iOS8?
※追記
iPhoneシミュレーターで確認したところ、
iOS8 SDKの仕様の変更ではなく、iOS8がインストールされた端末で
画面サイズを取得した時の仕様の変更のようです。
※追記 2014/10/30
下記のソースコードで取得できる値には変更はない模様です。
1 |
if (568.0f == CGRectGetWidth([UIScreen mainScreen]. applicationFrame)) {<br />} |