2012年12月27日木曜日

[iOS]iPhone、iPadの画面サイズ、フレームサイズを取得する


iOSの画面サイズは取得にくい、特に特にステータスバーやツールバーの存在がやっかい。

//現在のビューのサイズ、ツールバーやステータスバーのサイズは引かれる
//iPhone4でステータスバー、ナビゲーションバー、ステータスバーがあるとき、heightは480-20-44-44になる
self.view.frame.size.width
self.view.frame.size.height

//現在の端末のスクリーンサイズ
//iPhone4ではheight480、iPhone5ではheight568になる
[[UIScreen mainScreen] bounds].size.width
[[UIScreen mainScreen] bounds].size.height

//現在の端末のスクリーンサイズでステータスバー領域を含む
//iPhone4ではheight460、iPhone5ではheight548になる
[[UIScreen mainScreen] mainScreen].size.width
[[UIScreen mainScreen] mainScreen].size.height

問題になるのはナビゲーションバーを非表示のビューからpushしたビューで
viewDidLoadで
ナビゲーションバーを消しても
self.navigationController.navigationBarHidden = NO;
self.view.frame.size.heightは460になるということ

正確なサイズを知りたい時は
viewDidLoadでナビゲーションバーのON/OFFをして
viewDidAppearで座標を取得すること