根据尺寸等级更改约束的乘数

Posted

技术标签:

【中文标题】根据尺寸等级更改约束的乘数【英文标题】:Changing the multiplier of a constraint based on size class 【发布时间】:2014-12-01 12:02:24 【问题描述】:

是否可以根据当前的尺寸等级为约束赋予不同的乘数?

我的观点是,对于常规尺寸类宽度,我希望屏幕尺寸的一半,对于紧凑尺寸类宽度,我希望它是屏幕尺寸的 80%。在情节提要中,我可以选择将不同大小类的不同变量添加到约束常量值,但不是乘数。如果相关,这是一个等宽约束。

我在以编程方式添加约束方面做得不多,所以我希望它们可能是一个解决方案。谁能告诉我是否可以通过情节提要或以编程方式完成我正在寻找的事情?

【问题讨论】:

【参考方案1】:

解决方案非常明显,不知道我是怎么错过的。您必须创建两个不同的约束并相应地启用/禁用它们。

我认为这是一个非常不雅的解决方案,我真的很希望苹果能做到这一点,这样您就可以像常量变量一样为每个大小类定义不同的乘数。拥有许多仅相差一个值的约束似乎会导致故事板非常笨拙且难以维护。

如果有人知道任何更好的解决方案,或者知道为什么要这样做,我仍然想听听。

【讨论】:

绝对同意你的看法!正如 Apple 赋予了在同一约束上定义由大小类确定的不同常量的能力一样,他们应该对同一约束的乘数做同样的事情。 您是在代码中还是通过情节提要设置启用/禁用? @JohnD。您可以通过情节提要启用/禁用约束,方法是选择约束、滚动到检查器底部并勾选/取消勾选框。如果需要,我相信您也可以通过直接编辑代码来做到这一点。 对任何需要它的人做一点额外说明:在检查器中向下滚动到“已安装”,然后单击 + 按钮添加所需的变体。仅针对适当的班级规模标记复选框,然后对其他约束执行相同操作。【参考方案2】:

我能够通过选择元素(需要更改其约束)-> 尺寸检查器-> 约束选择“全部”而不是“此尺寸类”-> 这将显示为每个尺寸类提供不同的乘数当前尺寸类的约束与未选择的尺寸类的约束都灰显。右键单击所需的约束(常见的约束显示在两个尺寸类别中),您可以更改两个尺寸类别约束的乘数值。

【讨论】:

我没有看到您描述的行为。如果我添加了一个添加了不同大小类变体的单一约束,并且我按照您的说明单击“编辑”或双击它(右键单击不执行任何操作),它会将我带回到编辑视图约束,其中不可能根据尺寸等级更改乘数。我正在使用 Xcode 9.2。

以上是关于根据尺寸等级更改约束的乘数的主要内容,如果未能解决你的问题,请参考以下文章

自适应布局中更大 iPhone 的更高约束乘数

iOS - 通过 Swift 更改约束乘数 [重复]

如何使用两个不同的乘数更改单个高度约束的乘数

以编程方式更改中心 X / Y 的对齐约束的乘数

带有按钮的尺寸等级和约束

了解纵横比约束和乘数