既然你决定坚持使用自动布局...
假设您在场景中有许多 UI 元素(让我们说一些在其他元素中),而起初您根本没有设置任何约束。
一开始您对所有/或几乎所有元素不满意自动布局。这是因为您根本没有为它们中的任何一个设置任何内容(没有约束/自动调整大小掩码等)。所以在运行时/屏幕尺寸变化等期间对旋转/移动的反应对于每个人来说几乎是不可预测(我们就称之为“reaction ”)。
如何解决?我们知道有一个名为“约束”的解决方案。
约束设置两个元素(不是3、4或... n - 许多)之间的关系,其公式为
UIView.attribute1 = multiplier * UIView2.attribute2 + constant B。
让我们从第一个 UI 元素(您的 SomeView - 我们称之为 View1)开始,它是 Superview 的子元素。
一开始你对它的反应并不满意。所以你为那个特定的元素设置了约束。你在现场布置它。
现在你有了新的关系
-
UIView1.attribute = UIViewNth.attributeN + B 。
//实际上是UIView1.attribute1 = Superview.attribute2 + B。
仅在 2 个元素之间设置:超级视图和 ONE(不是很多)特定元素(您的 SomeView,我们刚刚称为 View1)。
//(您为 ONE 特定元素 - View1 - 即“SomeView”设置了布局/约束)。
您为其中两个实现了解决方案(实际上是一个,不考虑 Superview,-对于 someView,它是场景的 superView 的子视图)。
现在您可以预测 SomeView 对 Superview 的反应。
其余所有 UIElement 的反应仍然仍然无法预测。所有其余的 UI 元素彼此无关,并且其中任何一个元素都无关。 没有为其中任何一个(其余 UI 元素)设置布局。
您有 1 个工作正常。还不满意?
让我们走得更远。
现在您为第二个 ONE 特定元素设置约束。您可以通过建立现在第二个和 Superview/或场景上已经粘贴(与某处相关)的其他第 n 个 UI 元素之间的关系来布局它,因此第二个将粘贴到第 n 个他们不会一起搬走/崩溃/等等。第一贴第二贴,第二贴第三贴等等。
所以现在你有了新的关系
-
UIView2.attribute3 = Uiview1.attribute4 + A(A 是某个值)。
//或UIView2.attribute3 = Superview.attribute4 + A(某个值)。
现在您可以预测对 第二个 UI 元素的反应。它的反应符合与第一个元素。
或与 Superview/或 与 1st 元素(已坚持到 superview)。由您决定。
此时此刻你总共拥有
场景中的所有其余 3...n 元素仍然不可预测。我们称它为 k...n,其中 n 是最后一个。不满意?
现在您像以前一样为 k-th 元素 设置布局。您的场景中的 k-1 个 UI 元素仍然不满意。
……等等
在您的场景中重复直到第 n 个(最后一个)UI 元素。
所以回答你的问题。不。如果您有许多 UI 元素并希望它们中的大多数在运行时做出正确反应,那么没有短的(少约束方法)解决方案。