2011-10-18 17 views
5

私は、UINavigationController経由でロードされたいくつかのUIViewControllerを持っています。ここでloadViewをオーバーライドし、表示するカスタムビューをセットアップします。私はいくつかのサブビューのフレームを設定する際に問題を抱えており、おそらくビューそのものです。私は、UINavigationControllerまたはUIViewControllerのどちらかが、表示されたときに画面を満たすためにビューを強制的に押すことができると思います。UIViewControllerまたはUINavigationControllerはビューのサイズを設定しますか?

ビューのサイズが設定されているかどうか、および/またはいつ設定されているのでしょうか。それが起こっている場合は、ビューのフレームを設定するか、それを別の方法で行います。

ありがとうございました。更新

- (void)loadView 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 10.0f, 10.0f)]; 
    [view setBackgroundColor:[UIColor redColor]]; 
    self.view = view; 
    [view release]; 
} 

が、私は状況を除いて、画面全体を占有赤いビューを取得:このを通じて仕事をしながら は、私はちょうど気づいたが、私はこのloadViewメソッドで、新しいUINavigationControllerを作るということですバーとヘッダー。画面を埋めるために私のビューのサイズをいつ変更するのですか?ビューを作成するときに使用するサイズは?

答えて

3

UINavigationControllerは、UINavigationBar(44.0fのサイズ)を追加してビューを操作するため、UIViewControllersのフレームスペースは小さくなります。

ビューをself.view = view;に置き換えたためにサイズが変更されるaddSubview:を代わりに使用した場合、元のサイズに留まっていました。 logancautrellはいつ、そしていつ、なぜか説明しました。

+0

ありがとうございます。私のビューをビューコントローラloadViewにロードするとき、UINavigationController経由でプッシュすると、CGRectMake(0.0、0.0、320.0、416.0)としてフレームを設定するだけでいいですか? UINavigationBarまたはステータスバーのフレーム原点y座標を補正する必要はありませんか? – Ryan

+0

NavBarの下部がビューコントローラーの新しいX、Y原点になります。調整された高さを補正するだけで済みます。ディメンションの使用を確認するには NSLog(@ "wxh =%fx%f"、self.view.frame.size.width、self.view.frame.size.height); ' – Wolfert

+0

ありがとうございました私のために。ビューがいつ変更されるのか、私はまだ不思議です。私がloadViewで間違ったサイズを設定したとしても、正しいサイズに変更されるからです。私はあなたにそれを受け入れるでしょう。再度、感謝します。 – Ryan

9

UINavigationControllerは、プッシュするとViewControllerのビューを自動的にサイズ調整します。

pushViewController:アニメーション:ドキュメントからのViewControllerパラメータの

オブジェクトはナビゲーションスタックの一番上のビューコントローラとなります。ビューコントローラを押すと、ビューコントローラが管理するビューが表示されます。そのビューの表示方法は、アニメートされたパラメータによって決まります。アニメートされたパラメータがYESの場合、ビューはアニメーション化された位置に表示されます。それ以外の場合、ビューは単に表示されます。表示される前に、ナビゲーションバーとツールバー(存在する場合)の間に収まるように、ビューのサイズが自動的に変更されます。

小さなビューを表示するには、コンテナを作成してVCのビューの子にして、手動でサイズを設定する必要があります。自動作成マスクは、ビューの作成方法に応じて適切に設定する必要があります。

+0

ありがとう、これは私が一度読んだドキュメントですが、正確に何をどこで読んでいたのでしょうか? – Ryan

+2

プッシュ操作後にナビゲーションコントローラが強制的に子ビューコントローラのサイズを再調整する方法はありますか?ナビゲーションコントローラの高さを変更していますが、何らかの理由でコンテンツが自動的に調整されません。 – devios1

+0

また、移行中にデバイスを回転させたときに、ナビゲーションコントローラが子ビューコントローラのサイズのサイズを変更しないという問題があります。 – AdamPro13

関連する問題