如何在具有自动布局的容器视图中将 UITableView 的大小设置为子视图

How do I set the size of UITableView as a subview in a Container View with Auto-layout

我目前有一个包含菜单栏和容器 UIView 的 UIViewController。

在主视图加载时,容器有一个带有单独主内容 UIViewController 的嵌入转场。

当我单击菜单栏中的按钮时,我使用以下代码设置了一个自定义 segue 以将 UITableViewController 加载到 UIView 容器中

-(void) perform {
    BlockDetailViewController *src = (BlockDetailViewController *)[self sourceViewController];
    UIViewController *dst = (UIViewController *)[self destinationViewController];

    //Clear view of all subviews
    for (UIView *view in src.viewContainer.subviews) {
        [view removeFromSuperview];
    }
    //save destination
    src.currentViewController = dst;

    //set placeholderOutlet to destination
    [src.viewContainer addSubview:dst.view];
}

这会将 UITableViewController 加载到 UIView 中,但是,似乎 UITableViewController 大小设置为默认 window 大小,这意味着 UITableViewController 的底部单元格从视图中隐藏。如果向上拖动,您可以看到它们,但是当您放手时,弹跳会将它们带出视图。

如何确保 UITableViewController 的大小与它所在的 UIView 的大小相同?

谢谢

定义dst时,可以使用CGRect设置其位置、宽度和高度。

您只需创建一个 CGRect(框架)并将其设置为视图框架:

dst.view.frame = CGRectMake( CGRectGetMinX(self.view.frame),
                             CGRectGetMinY(self.view.frame), 
                             CGRectGetWidth(self.view.frame), 
                             CGRectGetHeight(self.view.frame);

这些值应该是浮点值。这只是一个例子。