【问题标题】:Same size of Container View and its child viewContainer View 及其子视图大小相同
【发布时间】:2017-11-21 15:49:36
【问题描述】:

我有一个 iOS 项目,其中有我的主视图控制器 A 和另一个视图控制器 BB 作为子视图控制器嵌入在 A 中。整个过程是在 Interface Builder 中使用 Container View 设置的。

现在,B 具有一些逻辑,它可以对平移手势做出反应以调整其视图大小。这一切都很好,问题是容器视图始终保持相同的大小并且不会随着B 的根视图调整大小。我希望容器视图的大小与B 的根视图保持同步。

对此最好的方法是什么?有什么方法可以在 Interface Builder 中进行设置吗?到目前为止,我发现的唯一可行的解​​决方案是创建一个BDelegateA 会监听它,然后调整容器视图的大小。有没有更简单的方法来实现这一点?

谢谢

【问题讨论】:

  • “容器视图”的想法是“自动加载”一个子视图控制器,并将其视图显示为容器的子视图。因此,正如您所见,更改连接的“子”视图的大小不会更改容器。您当然可以通过代码来实现,但如果您正在寻找仅自动布局的选项,您可能最好使用容器视图,而只需将B 设为子视图即可与。

标签: ios iphone swift autolayout interface-builder


【解决方案1】:

equalHeight 和 equalWidth 约束应该可以解决您的问题

【讨论】:

  • 抱歉,我可能应该澄清一下:IB 不允许容器视图与其子视图之间的约束。至少我想不出办法。
  • prntscr.com/flk2ik 从视图中拖动到它的容器中你会找到它
  • 问题是子视图没有出现在与容器视图相同的树中:imgur.com/a/DAfnT。这里,顶视图控制器是A,底视图控制器是B,我希望Timeline ContainerVisual Effect View 同步它们的大小
  • 我明白了!那么我相信你只能通过代码来完成这个
【解决方案2】:

感谢您的回答,我被指出了正确的方向 - 具体来说,这不可能像我想象的那样。

无法在父视图控制器和子视图控制器的视图之间设置约束 - 无论是在 IB 中还是在代码中

据我所知,有两种方法可以解决这个问题:

  1. 不要使用第二个 UIViewController。让你的子视图控制器的根视图成为你自己的实际子视图,并且只有一个 UIViewController。

  2. 不要使用自动布局。手动管理子视图控制器的视图框架,并在必要时将委托回调返回给父视图控制器。在这些委托回调中,您的父视图控制器可以对子视图控制器视图的大小变化做出反应。

【讨论】:

  • 一般来说,放弃解决方案 #2... 自动布局和约束是管理不同屏幕尺寸和方向的绝佳方式。有时您可能想使用代码来设置/更改特定的约束值,但您仍然会使用自动布局。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
  • 2014-03-04
  • 1970-01-01
相关资源
最近更新 更多