【问题标题】:Constraints that changes depending on the device bounds in storyboards根据情节提要中的设备边界而变化的约束
【发布时间】:2018-05-03 04:41:42
【问题描述】:

是否可以创建 constraints(顶部、前导、尾随、底部),根据设备 widthheight 仅使用 Storyboard 更改其常量?

PS:我不想添加任何额外的views,只是为了计算正确的新constraint

【问题讨论】:

  • 是的,您可以这样做。首先您需要将视图的常量设置为与超级视图(即窗口)相同,然后您只需将乘数从 0.1 更改为 1.0。希望这将有助于实现你想要的
  • 你能给出更多解释吗?将视图的常量设置为与父视图相同是什么意思。
  • 您是否希望实现视图之间的相对间距?
  • 是的,我想根据设备的边界改变间距

标签: ios xcode autolayout storyboard


【解决方案1】:

我知道这样做的一个 hacky 方式,我不知道这是否正是您要寻找的,但您可以通过设置视图顶部相对于中间的位置来相对间隔视图的superview。

为了做到这一点,你必须使用乘数并将分母用作(height of the canvas)/2
分子可以在0 - size of canvas 之间移动,并且它应该相对于超级视图定位。

可以做同样的事情来定位它的 x 轴。

您可以使用这些值来实现您的目标。

【讨论】:

  • 谢谢你的回答,我知道这可以解决问题,但这不是我真正想要的,我以前使用过这个解决方案,我觉得它很棘手。我知道每个约束都符合这个公式:A1 = A2 * M + C 所以我想创建一个约束,其中: - A1:顶部属性 - A2:高度属性(超级视图) - M:乘数 = 0.2 - C:常数= 0
  • 啊,我试着找到类似的东西-_-,这是我能做的最好的了,对不起朋友。
【解决方案2】:

Apple 提供了大小类,可以根据设备的大小自动调整约束和更新视图/常量。

请检查您的相关问题及其答案here

【讨论】:

  • 我不明白你是如何为标签选择乘数的值的。
  • 如果您想进行比例布局,则使用乘数。例如。如果您有超级视图(顶部、前导、尾随和底部约束)并且您在其中使用超级视图的一半大小的子视图,那么您的子视图宽度和高度约束的乘数将为 0.5 或 1:2。这适用于任何尺寸的设备。
  • 这真的很有帮助,但是如果标签在视图内,这个解决方案就不起作用,这是我发现自己最常见的情况,因为否则我总是可以使用计算填充您添加的附加视图,这就是我现在正在做的事情。
【解决方案3】:

【讨论】:

  • 感谢您的回答,但我的目标是,例如:我希望我的顶部约束等于超级视图高度的一半。我认为对于 size 类,我需要为每类设备提供不同的常量,这不是我想要做的。
  • 对不起,我误解了你的问题。
猜你喜欢
  • 2016-11-16
  • 2018-02-02
  • 1970-01-01
  • 2015-04-20
  • 2018-09-29
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2014-12-04
相关资源
最近更新 更多