【问题标题】:Leading constraint with multiplier not working带乘数的领先约束不起作用
【发布时间】:2019-01-14 14:26:09
【问题描述】:

我有一个按钮,其前导和尾随约束设置如下。在这里,我将常量设置为 0,并为 superview 提供了一个乘数。

尾随约束正常工作,但前导约束不正常。

也尝试了相同的情节提要,但领先的乘数也不起作用。

    view.addConstraint(NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.leading, relatedBy: NSLayoutRelation.equal, toItem: button, attribute: NSLayoutAttribute.leading, multiplier: 1.2, constant: 0))
    view.addConstraint(NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.trailing, relatedBy: NSLayoutRelation.equal, toItem: button, attribute: NSLayoutAttribute.trailing, multiplier: 1.2, constant: 0))
    view.layoutIfNeeded()

如何将带乘数的前导约束设置为超级视图

【问题讨论】:

  • 如果你没有什么可乘的,你希望得到什么?
  • @Desdenova multiplier 应用于item 的属性,而不是constant。代码是正确的。
  • @Desdenova 我已经给出了乘数:两个约束都为 1.2
  • @pradeep leading 的值是什么button
  • @mag_zbc 不,这是不正确的。让我换个说法,你打算如何乘以领先约束?

标签: ios swift storyboard nslayoutconstraint


【解决方案1】:

1-

firsItem(view)Leading = secondItem(button)Leading * 1.2 + constant

相等

0 = secondItem(button)Leading * 1.2 + 0

所以secondItem(button)Leading = 0

2-

firsItem(view)Trailing = secondItem(button)Trailing * 1.2 + constant

相等

viewWidth = secondItem(button)Trailing * 1.2 + 0

所以secondItem(button)Trailing = viewWidth / 1.2

【讨论】:

  • 在哪里可以设置button.leading? button.trailing 是如何工作的,因为我没有设置它?
  • 如果您没有为button.leading 锚设置约束,那么它可能是0,因为默认情况下,自动调整大小的掩码会转换为约束。您为button 设置的frame 是什么?
  • @mag_zbc 帧为 (0, 80, 400, 40)。并且宽度将根据前导和尾随约束而改变。
  • 那么很明显——button.leading就是0
  • @mag_zbc 和 Sh_Khan 那么我们如何在设置乘数之前明确设置 button.leading。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 2018-12-30
相关资源
最近更新 更多