2011-06-21 6 views
8

iPhoneアプリの「コンテンツ」領域に大きなナビゲーションバーがあることを認識させる方法はありますか?これらの質問と同様にiOS:UINavigationBarの背を高くし、他のビューを画面下に押し込むことは可能ですか?

私はUINavigationBarのカテゴリを追加し、その高さを変更することが第一の質問のサンプルコードを使用するために管理し、及びました私はそれを必要とするサブビューを追加しましたが、UITableView(または実際にはどのコンテンツビュー)でも高さを考慮する方法はありません:

iPhone 4 Simulator Screenshot

+1

+1 "(色は異なるビューを区別できるようにしています)"そうでなければ私は投票に近いと投票するでしょう:) < - joke –

答えて

8

最初の質問への受け入れ答えは「ewwwww」からどこかに依存して完全に間違っている-layoutSubviewsでのナビゲーションバーの枠を設定する(色が区別できる異なるビューを作成するだけです)他のレイアウトコードによって行われた仮定。

代わりに、より適切なサイズを返すには、-sizeThatFits:をオーバーライドしてください。

+0

私たちは勝者を持っています! sizeThatFitsから必要なサイズを返し、すべてが適切にサイズ変更されます。ありがとう! – Drarok

-2

私はtableView.frameを調整することによって、このことについていいと思うので、このような何か:

CGRect navFrame = self.navigationController.navigationBar.frame; 

CGRect tableFrame = self.tableView.frame; 

tableFrame.size.height = tableFrame.size.height - navFrame.size.height; 
tableFrame.origin.y = navFrame.size.height; //move it down by the height covered by the navigation Bar 

self.tableView.frame = tableFrame; 

あなたは同様にあなたの他のビューでこれを行うことができます - つまり、単純にフレームを調整することで。

私はこのコンピュータでXCodeを取得していないので、コードをチェックしていません - 例として書きましたので、使用する前に自分で確認してください!

+0

これは実際には、一見していくつかの異なる意見があるとすぐに実行可能なアプローチではありません。私はすべてのViewControllerでこれを実装する必要があります! – Drarok

+0

-1。ナビゲーションコントローラのビューは定期的に(例えば、回転の変化に合わせて)配置されます。このようなレイアウトのハックは、デバイスの回転や別のVCのプッシュ/ポップなどの予期しないことが起こるまで動作するように見えます。私はこれを一度に行う必要がありましたが、これを達成するための一般的に信頼性の高い方法があります。 –

関連する問題