2012-10-20 44 views
0

我對錶格視圖的適當框架大小適合我的屏幕有點困惑。嵌套子控制器/子視圖中tableview的框架大小

這是我的視圖控制器內視圖控制器的設置:

  • 的UITabBarController
    • UINavigationController的作爲標籤欄viewcontrollers之一;標題欄隱藏
      • 視圖控制器 - 容器視圖控制器,因爲我需要把一些控制的UITableView下,有時(但不是在目前的情況下)的選項
        • 的UITableViewController

現在,我的問題是UITableView中的正確框架尺寸應該是什麼。這是我在ViewController的viewDidLoad方法中得到的。我用從480.0減去49.0(標籤欄的大小)。但是,這在底部留下了黑色條。 20.0似乎這樣做(巧合?)狀態欄的大小,但我不明白爲什麼會這樣。 Tableview的真實像素尺寸是不是480-49?

// MessageTableViewController is my subclass of UITableViewController 
MessagesTableViewController *vcMessagesTable = [[MessagesTableViewController alloc] init]; 
CGRect tableViewFrame = CGRectMake(0, 0, 320.0, 480.0 - 49.0); 
[[vcMessagesTable view] setFrame:tableViewFrame]; 
self.tableViewController = vcMessagesTable; 
[self addChildViewController:vcMessagesTable]; 

[[self view] addSubview:vcMessagesTable.view];   

下面是它的外觀:

screenshot

回答

1

我碰到的這個問題也是 - 我認爲這將是最好不要硬編碼的大小,但指的尺寸一個是它的祖先控制器。在這種情況下,UINavigationController(即TabBar控制器的直接子節點)應該有正確的框架來填充整個屏幕減去tabBar。所以如果你需要底部的空間,我會從那個幀高度減去(如果你需要的話),否則,就使用那個幀。我認爲self.navigationController找到感興趣的控制器上方最近的導航控制器。