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
timeSwitch
和 timeLabel
是视图层次结构的一部分吗?
您是否将translatesAutoresizingMaskIntoConstraints
设置为false?
是否还有其他可能影响它的限制因素?
【讨论】:
timeSwitch
和timeLabel
是视图层次结构的一部分,我已将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的主要内容,如果未能解决你的问题,请参考以下文章