你真的可以将约束链接到完全不同的视图控制器吗?

Posted

技术标签:

【中文标题】你真的可以将约束链接到完全不同的视图控制器吗?【英文标题】:Can you actually link constraints to utterly different view controllers? 【发布时间】:2017-11-11 14:47:20 【问题描述】:

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

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

甚至 - 可能是您的 VC 被隐藏、滑出屏幕,甚至可能只是在缓存中而没有呈现,或者您可能有许多屏幕“堆叠”在一起,所以有些屏幕甚至没有可见。

所以说你有一个观点v

      var v: UIView

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

      var w: UIView

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

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

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

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

这可能吗?

当其中一个 VC 消失时是否会引起问题(比如)?

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

这是怎么回事?

【问题讨论】:

控制器视图和其他视图一样。在它们之间创建约束没有问题。 【参考方案1】:

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

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

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

【讨论】:

以上是关于你真的可以将约束链接到完全不同的视图控制器吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以通过 Segues 在视觉上完全“绕过”视图控制器吗?

将约束从视图传递到控制器 (MVC)

将视图控制器中的项目约束到导航栏中的项目

你真的完全了解Java动态代理吗?看这篇就够了

IOS中不同屏幕的按钮位置问题

从不同的控制器输出到相同的视图