UIViewController 布局变化

UIViewController layout changes

我有一个 UIViewController,它有 4 个子视图 - 左视图、右视图、底视图和中心视图。中心视图实际上嵌入了另一个视图控制器(AVPlayerViewController)。按下按钮,我希望更改左视图和底部视图并调整中心视图的大小。这次中心视图也将有一个不同的前导约束,因为它之前挂钩的左视图现在不再存在了。

使用自动版式和情节提要来完成这种事情的最简单方法是什么?有没有一种方法可以在故事板中定义相同 UIViewController 和更改状态的两个设计,所有这些都带有动画?

实现这一点的最佳方法几乎是在代码中操纵约束,

故事板仅在初始状态下直观地声明 UIViews

因为你不能为同一个 UIViewController 提供 2 个设计,但你肯定可以操纵它的状态。

在代码中,您可以以简洁的方式对约束进行动画处理、删除、添加和调整约束。

目前 UIStoryBoard 不支持相同的设计有 2 种 UIViewController 据我从你的问题中得到的是你做简单的事情如动画和约束调整大小以及实现的方式那就是操纵代码中的约束。

如何:

只需将约束的@IBOutletUIStoryBoard拖入UIViewControllerclass即可调整其属性,例如.constant.firstAnchor

快捷答案:不,你不能在故事板中为同一个 UIViewController 设计 2 个

有多种方法可以做到这一点。 Select适合自己的方式

  1. 您可以使用两个 容器 视图。一次,一个将被隐藏 另一个将显示。在每个容器视图的嵌入控制器中进行单独设计

    在这种情况下,您将有两个视图控制器。如果有的话,你将不得不管理它们之间的通信


  1. 您可以使用两个 UIView 的。一次,一个将被隐藏 另一个将显示。为故事板中的每个视图进行单独的设计。为了设计,将一个的alpha设置为0。这样你就可以设计另一个视图

    在这种情况下,一个视图控制器里面有两个视图。相互重叠。根据条件显示一个隐藏另一个


  1. 在带有动画的代码中操纵约束。设计和设置约束。然后制作约束出口并更改 yourConstraint.constantyourConstraint.anchor