2009-10-09 86 views
39

我有一個TabBarController,其中的一個選項卡包含一個子視圖,這是一個navigationController。然後,我將導入控制器加載一個繼承UITableViewController窗體的視圖。UITableViewController上邊距

我的問題是,由於某種原因,表視圖開始對導航控制器進行轟擊,而不是屏幕的頂部,但大約在導航欄下半部分,因此表視圖中第一個單元格的頂部被切斷。

任何人都可以建議如何將UITableViewController向下移動?

回答

-1

通過在視圖上設置框架屬性,可以將UITableView的框架設置爲明確的X,Y位置。或者,您可以使用界面構建器更改相同的屬性,具體取決於您是通過IB還是通過代碼添加了tableview。

例如。

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

這將定位表myTable的(這是一個指向的UITableView)導航欄下方,則還可能需要相應地調整平臺的高度。我用一個常數表示的導航欄的高度是44.0。

我通常做這種類型的視圖調整,如果它必須在視圖控制器的viewWillAppear負責。通常情況下,您需要進行這種類型的調整,以便通過更改視圖的設置方式來解決問題。

沒有關於如何設置視圖的更多細節,很難更具體。

98

修復它的編程方式:

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

這很好,但滾動條有點搞砸了。它們在這裏的導航欄下擴展。這就像我們需要改變框架,而不是僅僅爲scrollview添加edgeInset。但是,重新構建不起作用 – 2013-08-02 00:43:19

+4

@ chuckp16您還可以添加'self.tableView.scrollIndicatorInsets = inset;' – dokkaebi 2013-08-10 18:26:48

+4

(64,0,0,0)對於標準UINavigationBars(無提示)最適合。 – eulr 2014-02-17 23:49:32

7

這種「藏在背後的導航欄」的問題是由於iOS的7會自動使用全屏佈局。 See the iOS 7 Transition Guide

這是有點迂迴,因爲它顯示在iOS 6中的模擬器(佈局明智;即沒有隱藏在後面)。

是您的導航欄半透明?我的是,並將其設置爲在Iphone iOS 6,iPhone iOS 7和Simulator 7.0上使用XCode 5進行非半透明修復。(在我的情況下,我將其設置爲半透明用於視覺外觀。)

+0

哈!只是檢查日期......這不是關於iOS 7的佈局,是嗎? :)嘎。那麼,我想我可以把它留下來,以防這是今天第一個受到人們關注的問題,就像我一樣。 – 2013-09-27 14:07:36

+0

謝謝你離開這個。它幫助了我。 – jeffreymatthias 2013-10-22 05:53:54

+0

儘管原始問題並非如此,但這是一個非常有用的答案! – erdekhayser 2014-12-23 02:58:31