2009-10-09 6 views
39

私はTabBarControllerを持っています。そのタブの1つには、navigationControllerであるサブビューが含まれています。私は、ナビゲーションコントローラにUITableViewControllerを継承するビューをロードします。UITableViewControllerの上マージン

私の問題は、何かの理由でテーブルビューがナビゲーションコントローラのように動き始めるのではなく、画面の上部ではなくナビゲーションバーの下半分にあるため、テーブルビューの最初のセルの上端が途切れてしまいます。

誰でもUITableViewControllerを移動する方法を提案できますか?

答えて

-1

ビューのフレームプロパティを設定することで、UITableViewのフレームを明示的なX、Y位置に設定できます。または、IBまたはコードでテーブルビューを追加したかどうかによって、インターフェイスビルダーを使用して同じプロパティを変更することもできます。

例えば、

myTable.frame = CGRectMake(0.0, myTable.frame.origin.y + NAV_BAR_HEIGHT, myTable.frame.size.width, myTable.frame.size.height); 

これは、ナビゲーションバーの下(のUITableViewへのポインタである)テーブルMYTABLEを配置します、あなたもそれに応じて、テーブルの高さを調整する必要があります。私が定数で示しているナビゲーションバーの高さは44.0です。

私は通常、このタイプのビュー調整を行います。これは、ビューコントローラーのviewWillAppearearで必要な場合です。このタイプの調整を行う必要があるのは一般的ではありません。そのため、ビューの設定方法を変更することで修正できるものがあります。

ビューがどのように設定されているかの詳細がなければ、より具体的にすることは難しいです。プログラムで

98

修正それを:

- (void)viewDidLoad { 
     UIEdgeInsets inset = UIEdgeInsetsMake(20, 0, 0, 0); 
     self.tableView.contentInset = inset; 
    } 
+2

これは素晴らしいですが、私の場合は、私はそれを半透明に設定すると、iphone iOS 6、iPhone iOS 7、スクロールバーはちょっと台無しです。それらはここのnav barの下に広がっています。スクロールビューにedgeInsetを追加するのではなく、フレームを変更する必要があるようです。しかし、再フレーム化は機能しません。 –

+4

@ chuckp16 'self.tableView.scrollIndicatorInsets = inset; 'を追加することもできます。標準のUINavigationBars(プロンプトなし)の場合は – dokkaebi

+4

(64,0,0,0)が最適です。 – eulr

7

この問題は、「ナビゲーションバーの後ろで隠れては、」自動的にフルスクリーンレイアウトを使用してiOSの7によるものです。 See the iOS 7 Transition Guide

はiOS 6のようにシミュレータで表示されます(レイアウトは、背後に隠れていません)。

ナビゲーションバーは半透明です?私の場合、視覚的な外観のために半透明に設定しました)

+0

ハ!ちょうど日付をチェックしました...これはiOS 7のレイアウトではありませんでしたか? :)ガー。さて、私がやったように、これが最初のヒットした人々が今日の問題を探し求める場合に備えて、私はそれを残すことができると思います。 –

+0

これを残していただきありがとうございます。それは私を助けた。 – jeffreymatthias

+0

元の質問には当てはまりませんでしたが、これは非常に有益な答えです! – erdekhayser