Hatena::ブログ(Diary)

iPhoneアプリケーション開発

2008-10-27

ステータスバーを隠す

| 19:05

ステータスバー - iPhoneのスクリーンの一番上の時刻や電波の強さがでているバー

ゲームなどでフルスクリーンが必要な場合、このステータスバーを消すことになるかと思います。ステータスバーを消すのは簡単。



	[UIApplication sharedApplication].statusBarHidden	= YES;



m19さんに教えていただきました。Info.plistを編集することでも同様の効果を実現できます。BooleanのUIStatusBarHiddenというキーを追加して、チェックボックスをチェックしてあげてください。こちらの場合は、アプリが起動した時点でビューがロードされる前にStatusバーが消えています。


あとは、フルスクリーンにしたいviewのサイズをスクリーンのサイズに合わせてあげればいいはず。



	fullscreenView.bounds	= [UIScreen mainScreen].bounds;

ただ、これだとなぜかこんな風になってしまいます。空白ができるのはなんででしょう? 不思議?

f:id:iphone_dev:20081027190206p:image


[UIScreen mainScreen].boundsのサイズは(320, 480)です。仕方ないので、これを無理矢理 (320, 500)にするとViewは埋まってくれるのですが... なんだか釈然としませんね。どなたか分かる方がいらっしゃったらぜひ教えてください。


	fullscreenView.bounds	= CGRectMake(0,0,320,500);

kstnkstn 2008/10/27 23:52 fullscreenView.frame = CGRectMake(0,0,320,480);
だとどうでしょうか?

m19m19 2008/10/28 10:11 Info.plist の設定でも非表示にできます。

iphone_deviphone_dev 2008/10/30 19:29 >kstnさん
[UIScreen mainScreen].boundsのサイズが、0,0,320,480)なんですよ。
fullscreenView.frame = CGRectMake(0,0,320,480);だと、空白ができてしまいます。

>m19さん
なるほど! ありがとうございます。

melponmelpon 2008/11/12 18:15 遅レスですが、UIView の frame と bounds は別物ですよ。
多分 frame.size.height が 460 になっているのではないでしょうか。
frame = bounds = CGRectMake(0, 0, 320, 480) にすればちゃんと全体が埋まって、イベントも取れると思います。

melponmelpon 2008/11/12 18:19 つまり、
fullscreenView.frame = [UIScreen mainScreen].bounds;
fullscreenView.bounds = [UIScreen mainScreen].bounds;
と書けばいいだけかと。

とおりすがりとおりすがり 2012/02/22 12:02 bounds じゃなくて、applicationFrameを取得すれば良いのではないでしょうか?