【问题标题】:How do I set the size of UITableView as a subview in a Container View with Auto-layout如何在具有自动布局的容器视图中将 UITableView 的大小设置为子视图
【发布时间】:2015-03-04 15:18:57
【问题描述】:

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

在主视图加载时,容器有一个嵌入 segue,其中包含一个单独的主内容 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 的大小似乎设置为默认窗口大小,这意味着 UITableViewController 的底部单元格隐藏在视图之外。如果您向上拖动,您可以看到它们,但当您松开弹跳时,它们会从视图中消失。

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

谢谢

【问题讨论】:

    标签: ios uitableview uiview autolayout uistoryboardsegue


    【解决方案1】:

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

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

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

    【讨论】:

    • 这几乎是正确的。我已经设法通过执行以下操作来解决它; ` dst.view.frame = CGRectMake(0.0, 0.0, src.viewContainer.frame.size.width,src.viewContainer.frame.size.height); ` 因为 src.viewContainer 是接收新视图的容器。
    • 就像我写的那样,这只是一个将其设置为与父视图相同大小的示例。但是尝试使用 CGRect 宏,您可以使用更多的宏来获取帧的特定值,并且它比通过点运算符访问帧的位置更具可读性
    • 因为这发生在 Segue 中,所以 self.view.frame 将无法工作,因为 self 是 Segue。以防其他人尝试使用此代码。
    • 如果代码位于扩展 Segue 的类中,您可能会以不同的方式传递值。也许在你的 segue 上设置新属性,你可以在 segue 到你的下一个 UIViewController 之前设置一个 CGRect 值。您只显示了代码的一部分,因此并不清楚您来自哪里以及去哪里。
    【解决方案2】:

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

    【讨论】:

    • 你有一个例子来说明它是如何工作的吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2014-08-12
    相关资源
    最近更新 更多