Ios 带容器的自动布局

Ios 带容器的自动布局,ios,objective-c,swift,uiviewcontroller,containers,Ios,Objective C,Swift,Uiviewcontroller,Containers,使用自动布局,我希望色彩鲜艳的UIViewControllers负责它们自己的高度,尽管容纳它们的容器的约束在主UIViewControllers中。也许这可以通过使用协议和委托来实现?有什么想法吗 为了封装起见,彩色的UIViewControllers不应暴露于主UIViewController 大概是这样的: func updateMyHight() { self.containerHoldingMe.heightConstraint.constant = 100 } 我要做

使用自动布局,我希望色彩鲜艳的
UIViewControllers
负责它们自己的高度,尽管容纳它们的容器的约束在主
UIViewControllers
中。也许这可以通过使用协议和委托来实现?有什么想法吗

  • 为了封装起见,彩色的
    UIViewControllers
    不应暴露于主
    UIViewController

大概是这样的:

func updateMyHight()
{
    self.containerHoldingMe.heightConstraint.constant = 100
}

我要做的是:

  • 在绿色和蓝色控制器的视图中放置“容器视图”,并将顶部、前导和尾随约束到viewcontroller的视图
  • 将导致调整其大小的图元放置在这些容器中,并以容器高度取决于其包含图元的方式对其进行约束
  • 通过添加弱控制器来维护对父控制器的引用 属性中的绿色和蓝色控制器 父控制器中的
    prepareforsgue
    方法
  • 向父应用程序中的容器添加高度约束,并将IBOutlet拖动到这两个约束
  • 加载绿色和蓝色控制器并调整图元大小后,获取“容器”视图高度并将其指定给父控制器中的高度约束

  • 子类UIView和override
    intrinsicContentSize
    。如果你玩对了牌,你会给你的子类一个属性,你的
    intrinsicContentSize
    会参考这个属性。现在,就自动布局而言,视图正在设置自己的高度


    如果您还希望它们间隔均匀,请使用iOS 9的新UIStackView来分布它们。它遵循其排列视图的固有内容大小。由于堆栈视图可以在nib中配置,因此整个练习基本上由一行代码组成。

    请在附件中找到答案

    1。代码和界面生成器

    2。结果

    你能再详细说明一下吗?当然可以。您希望我在哪里详细说明?这不是视图控制器的好用途。@matt,否则您将如何实现它?我甚至想说,您的界面可能过于复杂了。您不需要这么多控制器,所有控制器都具有独立的高度等。为什么不为单元提供UITableView和viewModels?然后系统将为您计算高度?当您有无数彩色控制器时,这个答案就不太好了。如果从主控制器控制每个彩色控制器的大小,则会丢失看起来很有希望的包装。你能不能给你发个代码,以便快速复制粘贴?或者将其上传到某个地方?如果您使用容器的常规序列,则无法工作:-/