Iphone 如何使用autolayout在两个子视图控制器之间移动?

Iphone 如何使用autolayout在两个子视图控制器之间移动?,iphone,ios,xcode,autolayout,Iphone,Ios,Xcode,Autolayout,我正在制作一个视图控制器,其中包含一个左侧栏容器视图和一个主容器视图,后者是一个导航控制器 下面是它的图片: 我正在使用自动布局,因此只能使用约束 如何使屏幕仅显示此视图控制器的一部分? 我无法更改框架,因为我正在使用autolayout…首先,请尝试调整包含视图(包含这两个容器的视图)的框架以将其向左移动 理论上它只是[rightContainerView superview] 如果这对您不起作用,您可以始终迭代在任一视图上设置的约束,并移除/调整它们,直到获得所需的布局。您可以保留在视图控

我正在制作一个视图控制器,其中包含一个左侧栏容器视图和一个主容器视图,后者是一个导航控制器

下面是它的图片:

我正在使用自动布局,因此只能使用约束

如何使屏幕仅显示此视图控制器的一部分?
我无法更改框架,因为我正在使用autolayout…

首先,请尝试调整包含视图(包含这两个容器的视图)的框架以将其向左移动

理论上它只是
[rightContainerView superview]

如果这对您不起作用,您可以始终迭代在任一视图上设置的约束,并移除/调整它们,直到获得所需的布局。您可以保留在视图控制器的阵列中删除的约束,然后在需要恢复时将其添加回


请参见
[查看约束]

您只需调整约束的常量参数。因此,您希望两个容器视图对superview的顶部和底部具有约束。右侧容器应固定到superview的右侧,并且从其左侧到左侧容器视图的右侧具有0长度约束(但没有固定宽度)。为左容器视图指定superview左边缘的约束和宽度约束。这应该给你足够的约束来定义你的起点。将IBOutlet设置为左容器视图对superview左边缘的约束(我们称之为leftCon)。然后,当您要将左侧容器视图从屏幕移到左侧时,请更改其leftCon约束的常量值:

self.leftCon.constant = -200; // this will move it 200 point to the left, and the right view will expand by 200 points.

您希望它显示哪个部分?正确的容器视图。然而它最终向我展示了这个。。。那么您希望左侧容器的宽度变为0,有效吗?或者X原点向左移动,使右容器成为唯一可见的对象?X原点向左移动,使右容器成为唯一可见的对象。我正在使用autolayout,这是我丢失的地方。但是autolayout的规则是你不触摸框架吗?不一定。自动布局的目的是,当您希望自动布局视图时,不必触摸视图的框架。当需要显式移动视图时,仍然必须显式移动视图。如果要更改约束,当然可以随时更改。但听起来你只是想把一个视图移过去,然后再移回来,让其他部分之间的关系保持不变。如果你有时间的话,2012年和2013年的WWDC视频中关于autolayout的内容非常有助于澄清autolayout的许多最常见的使用案例。这让我的标题视图看起来像这张图片中的一样。。。我只有一个标题视图,它在导航栏的右上角有一个图像(aspectFit)和一个搜索导航项。@AnthonyGlyadchenko,我不确定我在你的图像中寻找什么。当左视图移开时,您希望发生什么?您希望右视图展开,还是当两个视图都在屏幕上时,右视图的某些内容隐藏了,并且当右视图移到屏幕上以填充屏幕时,隐藏的内容会显示出来?