X 位置约束未以编程方式更新 - Xcode 中的 Swift

Posted

技术标签:

【中文标题】X 位置约束未以编程方式更新 - Xcode 中的 Swift【英文标题】:X Position Constraint Not Updating Programmatically - Swift in Xcode 【发布时间】: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 位置(底部约束),这个 确实 工作。谢谢!

【问题讨论】:

【参考方案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 一样更新它,你不添加另一个是吗?见***.com/questions/27869514/swift-update-constraint

以上是关于X 位置约束未以编程方式更新 - Xcode 中的 Swift的主要内容,如果未能解决你的问题,请参考以下文章

Android:导航抽屉标题文本视图未以编程方式设置

以编程方式更改 Y 位置约束

相对 Xcode Storyboard 约束

如何在没有 XIB 文件的情况下以编程方式更新 Xcode 中的 UILabel?

未以编程方式检测 Dismiss Popover

水平对齐在 Xcode 故事板中不被视为 X 位置约束吗?