Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 容器视图及其子视图的大小相同_Ios_Iphone_Swift_Autolayout_Interface Builder - Fatal编程技术网

Ios 容器视图及其子视图的大小相同

Ios 容器视图及其子视图的大小相同,ios,iphone,swift,autolayout,interface-builder,Ios,Iphone,Swift,Autolayout,Interface Builder,我有一个iOS项目,其中有我的主视图控制器A,还有另一个视图控制器BB作为子视图控制器嵌入在A中。整个过程都是在Interface Builder中使用容器视图进行设置的 现在,B有了一些逻辑,它可以对平移手势做出反应来调整视图大小。这一切都很好,问题是容器视图始终保持相同的大小,并且不使用B的根视图调整大小。我希望容器视图的大小与B的根视图保持同步 最好的方法是什么?有没有办法在Interface Builder中进行设置?到目前为止,我找到的唯一可行的解决方案是创建一个BDelegate,

我有一个iOS项目,其中有我的主视图控制器
A
,还有另一个视图控制器
B
B
作为子视图控制器嵌入在
A
中。整个过程都是在Interface Builder中使用容器视图进行设置的

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

最好的方法是什么?有没有办法在Interface Builder中进行设置?到目前为止,我找到的唯一可行的解决方案是创建一个
BDelegate
,它
a
侦听并调整容器视图的大小。有没有更简单的方法来实现这一点


谢谢

等高和等宽约束应该可以解决您的问题

谢谢您的回答,我的方向是正确的——特别是,这不可能像我想象的那样

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

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

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

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


  • 抱歉,我可能应该澄清一下:IB不允许容器视图与其子视图之间存在约束。至少我想不出一个办法。从视图向右拖动到它的容器,你会发现它。问题是子视图与容器视图不在同一棵树中:。在这里,俯视图控制器是
    A
    ,俯视图控制器是
    B
    ,我想
    时间线容器
    视觉效果视图
    同步它们的大小!我相信您只能通过代码来实现这一点,“容器视图”的概念是“自动加载”子视图控制器,并将其视图显示为容器的子视图。因此,正如您所看到的,更改连接的“子”视图的大小不会更改容器。您当然可以通过代码来实现,但如果您正在寻找仅自动布局选项,则最好不要使用容器视图,而只是将
    B
    作为子视图开始。一般来说,放弃解决方案#2。。。自动布局和约束是管理不同屏幕大小和方向的完美方法。有时,您可能希望使用代码来设置/更改特定的约束值,但仍然使用自动布局。