嵌套子控制器/子视图中的tableview框架大小

时间:2012-10-20 05:28:50

标签: ios

我对桌面视图的正确框架大小适应我​​的屏幕感到有点困惑。

这是我在视图控制器中设置的视图控制器:

  • 的UITabBarController
    • UINavigationController作为标签栏视图控制器之一;标题栏隐藏
      • ViewController - 一个容器视图控制器,因为我需要选择在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 个答案:

答案 0 :(得分:1)

我也遇到过这个问题 - 我认为最好不要硬编码大小,而是要参考其祖先控制器的大小。在这种情况下,UINavigationController,它是tabBar控制器的直接子节点,应该有正确的框架来填充整个屏幕减去tabBar。如果你想要底部的空间,我会从那个框架高度减去(如果你需要),否则,只需使用那个框架。我认为self.navigationController在您感兴趣的控制器上方找到最近的导航控制器。