无法同时满足约束 - 制图

Posted

技术标签:

【中文标题】无法同时满足约束 - 制图【英文标题】:Unable to simultaneously satisfy constraints - Cartography 【发布时间】:2015-09-23 04:11:43 【问题描述】:

我在使用 Swift 2.0 编写的应用程序中使用 AutoLayout 和代码,并使用 Cartograph 来帮助约束。 但是有些东西阻止了我的应用程序,否则,我会使用它以编程方式添加视图。

func addButtonOne() -> Void 
    buttonOne = UIButton()
    buttonOne.backgroundColor = UIColor.greenColor()
    self.view.addSubview(buttonOne)

    constrain(buttonOne, view)  buttonOne, view in
        buttonOne.left == view.right - 12
        buttonOne.right == view.left + 12
        buttonOne.bottom == view.bottom - 12
    


但编译后,返回:

2015-09-23 00:54:24.489 Fun With Swift[24809:2358352] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
Try this: 
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it. 
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, 
refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 

(
"<NSLayoutConstraint:0x7afe2160 H:[UIView:0x7afdfe90]-(-12)-[UIButton:0x7afe13b0](LTR)>",
"<NSLayoutConstraint:0x7afe2730 UIButton:0x7afe13b0.right == UIView:0x7afdfe90.left + 12>",
"<NSLayoutConstraint:0x7b0866e0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7afdfe90(320)]>"
)

有人知道我能做什么吗?这是一个不同的问题,因为我使用了一个库。

【问题讨论】:

Auto-layout: What creates constraints named UIView-Encapsulated-Layout-Width & Height?的可能重复 没有。我正在使用 Swift 和一个库来做到这一点。 我不认为图书馆是这里的问题。 问题出在这两个关系 buttonOne.left == view.right - 12 buttonOne.right == view.left + 12. buttonOnce 怎么才能让 view.right 和 buttonOne.right 和 view.留下相关的? 【参考方案1】:

添加约束代码应如下所示

 constrain(buttonOne, view)  buttonOne, view in
            buttonOne.left == view.left + 12
            buttonOne.right == view.right - 12
            buttonOne.bottom == view.bottom - 12
        

如果您需要底部的按钮,距离左右和底部有 12 pt 的边距

【讨论】:

以上是关于无法同时满足约束 - 制图的主要内容,如果未能解决你的问题,请参考以下文章

自动布局约束:无法同时满足约束

使用代码创建约束 - 出现错误“无法同时满足约束”[重复]

无法同时满足约束。虽然没有定义重复/不需要的约束

关闭:“无法同时满足约束”[重复]

动画时无法同时满足约束

iOS - AutoLayout'无法同时满足约束'