NSLayoutConstraint没有在uibutton和uilabel上工作

时间:2015-12-16 06:00:58

标签: ios swift nslayoutconstraint

我创建了一个uilable和uibutton

@IBOutlet weak var label_one: UILabel!
@IBOutlet weak var btn_one: UIButton!

并设置跟踪和前导约束

        self.btn_one.translatesAutoresizingMaskIntoConstraints=false
    let contariants=NSLayoutConstraint(item:self.view,attribute:NSLayoutAttribute.LeadingMargin , relatedBy: NSLayoutRelation.Equal, toItem: btn_one, attribute: NSLayoutAttribute.LeadingMargin, multiplier: 1.0, constant: 20)
    let trailingConstraints=NSLayoutConstraint(item: self.view, attribute:NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: btn_one, attribute:NSLayoutAttribute.Trailing , multiplier: 1.0, constant:20 )

    self.view.addConstraint(contariants)
    self.view.addConstraint(trailingConstraints)

//但它根本不起作用并发出以下警告 可能至少下列列表中的一个约束是您不想要的约束。     试试这个:         (1)查看每个约束并试图找出你不期望的;         (2)找到添加了不需要的约束或约束的代码并修复它。 (     “”     “UIButton:0x7ff8c84b0b60'Button'(姓名:'|':UIView:0x7ff8c85226d0)>” )

将尝试通过违反约束来恢复

在UIViewAlertForUnsatisfiableConstraints处创建一个符号断点,以便在调试器中捕获它。 在列出的UIView上的UIConstraintBasedLayoutDebugging类别中的方法也可能有所帮助。 2015-12-16 10:39:01.918 ConstraintsExample [2635:38168]无法同时满足约束条件。     可能至少下列列表中的一个约束是您不想要的约束。     试试这个:         (1)查看每个约束并试图找出你不期望的;         (2)找到添加了不需要的约束或约束的代码并修复它。 (     “”     “UIButton:0x7ff8c84b0b60'Button'(姓名:'|':UIView:0x7ff8c85226d0)>”,     “”     “” )

将尝试通过违反约束来恢复

在UIViewAlertForUnsatisfiableConstraints处创建一个符号断点,以便在调试器中捕获它。 UIView中列出的UIVonstraintBasedLayoutDebugging类别中的方法也可能有所帮助。

2 个答案:

答案 0 :(得分:0)

此错误是因为您尝试使视图同时执行多个约束。在您从IB上拖放元素的瞬间,它会对给定位置进行基本约束。 当您尝试使用以下“addConstraint”方法时,编译器无法理解要遵循的约束。

如果您以编程方式制作按钮和标签,则上述操作将起作用。 PFB一个帖子谈论这个:

Programmatically Add CenterX/CenterY Constraints

如果您想修改故事板上的现有约束: 在元素上添加约束: adding an element contraint

没有使用该约束作为与您的代码的连接: make the constraint part of the code

答案 1 :(得分:0)

您执行错误消息所说的内容。您可以查看它显示的约束,仔细思考,并找出存在矛盾约束的位置。

您可能在.xib文件或故事板中有一些约束。

顺便说一句。 “contariants”太可怕了。第一个约束看起来不对(view.leading = button.leading + 20,这意味着按钮从屏幕左侧开始20个像素????)。 NSLayoutAttribute.LeadingMargin应该只是.LeadingMargin。