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

Posted

技术标签:

【中文标题】嵌套子控制器/子视图中 tableview 的框架大小【英文标题】:Frame sizing of tableview within nested child controllers/subviews 【发布时间】:2012-10-20 05:28:49 【问题描述】:

我对表格视图的适当框架大小以适合我的屏幕感到有点困惑。

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

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];        

它的外观如下:

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于嵌套子控制器/子视图中 tableview 的框架大小的主要内容,如果未能解决你的问题,请参考以下文章

求SQL相关子查询和嵌套子查询通俗的区别 ?

子查询(嵌套子查询)

页眉组件 - 无法让 Vuex 更新嵌套子组件上的存储

SQL相关子查询和嵌套子查询的区别

关于SQL DELETE嵌套子查询问题

Qt怎样设置QMainWindow窗口中嵌套的QWidget子窗口的背景色