【问题标题】:X Position Constraint Not Updating Programmatically - Swift in XcodeX 位置约束未以编程方式更新 - Xcode 中的 Swift
【发布时间】:2016-05-15 16:28:54
【问题描述】:

我以编程方式在设置为 IBOutlet 的 UISwitch 上设置了以下约束:

func setConstraints {
    let leadingConstraintTimeSwitch1 = NSLayoutConstraint(item: timeSwitch, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: timeLabel, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 10)
    view.addConstraint(leadingConstraintTimeSwitch1)

每当我改变这个约束的常数时,开关的 X 位置保持不变。但是,当我转到开关的尺寸检查器并更改其 X 值时,开关的位置 确实 正确更新,但是我不想使用尺寸检查器。如何以编程方式获取约束集以覆盖大小检查器中的 X 值?我还添加了一个约束,指定开关的 Y 位置(底部约束),这个 确实 工作。谢谢!

【问题讨论】:

    标签: ios xcode swift constraints nslayoutconstraint


    【解决方案1】:

    您的描述中没有太多信息可参考..

    我通常像这样添加我的约束:

    NSLayoutConstraint(item: timeSwitch, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: timeLabel, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 10).active = true
    

    timeSwitchtimeLabel 是视图层次结构的一部分吗?

    您是否将translatesAutoresizingMaskIntoConstraints 设置为false?

    是否还有其他可能影响它的限制因素?

    【讨论】:

    • timeSwitchtimeLabel 是视图层次结构的一部分,我已将translatesAutoresizingMaskIntoConstraints 设置为false,并且我还有许多其他具有完全正常工作的约束的对象。我看不出会有任何其他可能影响它的约束。就像我说的,在尺寸检查器中,当我更改 X 值时,开关会更改到该 X 值的位置,但程序约束不会覆盖它。谢谢!
    • 你是如何改变常数的?
    • 通过改变let leadingConstraintTimeSwitch1 = NSLayoutConstraint(item: timeSwitch, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: timeLabel, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 10)@Scriptable中的常量
    • 你应该像leadingConstraintTimeSwitch1.constant = value 一样更新它,你不添加另一个是吗?见stackoverflow.com/questions/27869514/swift-update-constraint
    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多