2009-08-31 14 views
15

私はMainWindow.xibにロードされたビューを持っています。これは、画面全体に画像を表示するuiimageviewを持つビューです(320 X 480)。アプリの負荷が私は、このビューを表示し、その後、私はIPhone - UIView addSubview上部のギャップ

[self.view addSubview:tabbarController.view]; 

タブバーコントローラはそれに追加2つのビューコントローラとUITabBarControllerで行うと。 tabbarControllerのビューをサブビューに追加すると、約20ピクセルの上にギャップが残されます。私のアプリはステータスバーを持っていますが、これは基本的に別の場所のための部屋です。これは私のビューコントローラにこれを追加しない限り起こります:

self.view.frame = CGRectMake(0, 0, 320, 480); 

誰でもこれを説明できますか?私はしていた

self.view = tabbarController.view; 

しかし、私はそれをするべきではないと言われました。今はサブビューを追加していますが、なぜ20pxを表示しないように私のビューのCGRectを調整する必要があるのか​​分かりません。

答えて

17

UITabBarControllerは、ビューが他のUIViewのサブビューではなく、UIWindowのサブビューとして追加されることを想定しています。 frameプロパティは、スーパービュー内のビューのオフセットを定義します。したがって、UITabBarController実装は、デフォルトではビューのフレームを20ピクセルオフセットしてステータスバーのためのスペースを確保します。 UITabBarControllerを非標準的な方法で使用しているのは、ステータスバーの20ピクセル分オフセットされているビューに追加することです。 UITabBarControllerはスーパービューに比べて20ピクセルだけ視点をずらし、表示されるギャップを発生させます。この問題を解決するために

一つのきれいな方法ではなく、ビューのウィンドウのサブビューとしてUITabBarControllerのビューを追加します:

[[[UIApplication sharedApplication] keyWindow] addSubview:tabbarController.view]; 

(注意:あなたがすでに呼び出されてしまった場合keyWindow方法は、あなたのウィンドウを返します。 makeKeyAndVisible。UIViewControllerにウィンドウプロパティを設定したい場合があります。

+0

ありがとうございます。たぶん私は戻って、私のアプリの一部を再構築する必要があります。私は正しいやり方をしたいと思っていますが、View ControllerロジックとApp Delegateを分離するほうが良いかもしれないと思っています。これは、なぜ私のルートビューコントローラで、私はself.view = tabbarController.viewをサブビューとして追加するのではなく、私はギャップを得ることができなかった理由を説明します。素晴らしい答え。私ができるなら、私はもっと票を投じるだろう。 – Brian

+0

あなたの本能がここで良かったようです。これはCocoa Touchの設計上の制限の1つに過ぎません。 必ずしも、あなたのアプリケーションデリゲートのウィンドウにtabbarController.viewを追加する必要はありません。それが最も理にかなっていると思われる場合は、View Controllerに追加することができます。 keyWindowメソッドを使用するか、コントローラのプロパティとしてapplicationDidFinishLaunching:に戻すだけで、ウィンドウオブジェクトにアクセスする必要があります。 – cduhn

+0

これは、tabbarcontroller.viewがwindow.viewのサブビューになったことを意味していませんか? しかし私の場合、私は広告の表示があり、次に第2のコンテンツビューがあります。そして、私はcontentviewにtabbarcontroller.viewを追加しています。このようにして、viewcontrollerは広告に応じてcontent/adviewを処理します。私は、ウィンドウにtabbarcontroller.viewを追加する場合、私は私のviewcontrollerを使用してビューを処理することができるとは思わない。どう思いますか? – LolaRun

関連する問題