2017-06-19 56 views
0

我有一个iOS项目,其中有我的主视图控制器,A和另一个ViewController BB作为子视图控制器嵌入在A中。整个事情在Interface Builder中使用Container View进行设置。现在容器视图和子视图的大小相同

Setup Logic

B有它反应平移手势来调整其观点,一些逻辑。这一切都正常工作,问题是容器视图总是保持相同的大小,并不会调整B的根视图。我希望容器视图的大小与B的根视图保持同步。

这是最好的方法是什么?有什么方法可以在Interface Builder中进行设置吗?我目前发现的唯一可行解决方案是创建一个BDelegateA监听并调整容器视图大小。有没有更简单的方法来实现这一目标?

感谢

+0

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

回答

0

感谢您的回答,我被指出了正确的方向 - 具体而言,这是不可能的我以为是这样。

有没有办法有一个父视图控制器和子视图控制器的视图之间的限制 - 无论是在IB,也没有在代码

据我所看到的,有两种方式解决这个问题:

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

  2. 请勿使用自动布局。手动管理子视图控制器视图的框架,并在必要时将委托回调回到父视图控制器。在这些委托回调中,您的父视图控制器可以对子视图控制器视图的大小更改作出反应。

+0

作为一般规则,丢弃解决方案#2 ...自动布局和约束是管理不同屏幕尺寸和方向的完美方式。有时您可能想使用代码来设置/更改特定的约束值,但您仍然使用自动布局。 – DonMag

0

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

+0

对不起,我可能应该澄清一下:IB不允许Container视图和其子视图之间的约束。至少我无法想出办法。 – BlackWolf

+0

http://prntscr.com/flk2ik 只是从视图拖到它的容器,你会发现它 –

+0

问题是,子视图不会出现在容器视图相同的树:http:// imgur。 com/a/DAfnT。在这里,顶视图控制器是'A',底部视图控制器是'B',我希望'时间轴容器'和'视觉效果视图'同步他们的尺寸 – BlackWolf

相关问题