你真的可以 link 约束完全不同的视图控制器吗?

Can you actually link constraints to utterly different view controllers?

假设您有一个屏幕,其中有许多视图控制器(带有容器视图或其他)。

(如果您愿意,可以想象一个 iPad 应用程序有许多大而复杂的区域,每个区域都有自己的列表、控件等子容器视图)

甚至 - 可能是您的 VC 被隐藏、滑出屏幕,甚至可能只是在缓存中而不显示,或者您可能有多个屏幕 "stacked on top",所以有些是甚至不可见。

假设你有一个视图 v

      var v: UIView

在其中一个视图控制器中,以及一个视图 w

      var w: UIView

在一个完全不同的视图控制器中。

出于某种原因,您希望这两个项目在屏幕上具有相同的宽度

事实上。你可以 NSLayoutConstraint 一个到另一个吗?

(显然你不能在故事板中;这没什么大不了的。你可以在布局时在代码中完成。)

这可能吗?

当其中一个 VC 消失时,它会引起问题吗?

(实际上约束会导致硬引用吗?)

这是怎么回事?

是的,它会起作用,只要您的视图都是同一视图层次结构的一部分。它们是 childViewControllers 并不重要,一切都以与普通子视图相同的方式工作。

您只能向已添加到同一视图的视图添加约束,如果您尝试向尚未添加的视图添加约束,则会出现异常。

如果删除任何视图,它们的相关约束也将被删除。