繁体   English   中英

NSLayoutConstraint不适用于uibutton和uilabel

[英]NSLayoutConstraint not working on uibutton and uilabel

我创建了一个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的UIConstraintBasedLayoutDebugging类别中的方法也可能会有所帮助。

此错误是因为您试图使视图同时执行多个约束。 从IB拖动n元素到视图上的那一刻,它就成为给定位置的基本约束。 当您尝试使用以下“ addConstraint”方法时,编译器无法理解要遵循的约束。

如果您以编程方式制作按钮和标签,则上述方法将起作用。 PFB发表了一篇关于这个的文章:

以编程方式添加CenterX / CenterY约束

如果要在情节提要上修改现有约束,请执行以下操作:在元素上添加约束: 添加元素约束

请勿将该约束用作您的代码的连接: 使约束成为代码的一部分

您执行错误消息中所说的操作。 您查看它所显示的约束,认真思考,并找出哪里有矛盾的约束。

.xib文件或情节提要中可能有一些约束。

顺便说一句。 “封建主义者”是可怕的。 第一个约束看起来不正确(view.lead = button.lead + 20,这意味着按钮从屏幕左起20个像素?)。 NSLayoutAttribute.LeadingMargin应该只是.LeadingMargin。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM