iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
先日のビューによる画面遷移では、二通りに画面サイズを取得するコードがあったと思うが、その値を見てみる事にする。
CGRect screenBounds = [[UIScreen mainScreen] applicationFrame];
DBGMSG(@"screenBounds:(%f, %f, %f, %f)",
screenBounds.origin.x,
screenBounds.origin.y,
screenBounds.size.width,
screenBounds.size.height);
CGRect windowBounds = [[UIScreen mainScreen] bounds];
DBGMSG(@"windowBounds:(%f, %f, %f, %f)",
windowBounds.origin.x,
windowBounds.origin.y,
windowBounds.size.width,
windowBounds.size.height);
後の話で出てくるが、注目すべきは、screenBoundsはステータスバー分、Y軸方向に20下がっている。この事が、nibを使った場合に、気をつけないと行けない事になるが、詳しくは次の機会で。
補足の説明だ。
frameは上位ビューの座標系の値となっている。なので、Y軸の値はステータスバー分、下がっている。boundsはローカル座標系の値なので、上位との位置関係を考慮しないので、原点(0, 0)からの値となっている。
windowのサイズは画面一杯にする。なので、ステータス分は考えない、画面のサイズを設定する。ビューは、表示される領域のサイズにしないと、その部分は隠れてしまう。サンプルでも、そのようにしている。