iOS无法同时满足约束

时间:2015-11-14 23:52:35

标签: ios autolayout constraints

关于这个问题已经在StackOverflow上发布了几个问题,我已经阅读了很多问题,但是已发布的解决方案无法解决我的问题。

我只想在superview和它的子视图之间有一个固定的边距或4像素的填充。在调整superview的大小时,必须自动调整子视图的大小,以便在所有边上保持恒定的4像素填充。

我最初尝试在Interface Builder中为相关类的单独XIB文件执行此操作,并且我一直在输出窗口中收到冲突约束的通知。然后我决定以编程方式尝试,我仍然收到错误。

下面的代码段显示了我尝试过的几个解决方案之一。

class MapThumbnail: UIView {

    let contentView = UIImageView()

    override init(frame: CGRect) {
        super.init(frame: frame)

        initialize()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        initialize()
    }

    func initialize() {

        addSubview(contentView)

        contentView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint(item: contentView, attribute: .Leading, relatedBy: .Equal, toItem: self, attribute: .Leading, multiplier: 1.0, constant: 4.0).active = true
        NSLayoutConstraint(item: contentView, attribute: .Width, relatedBy: .Equal, toItem: self, attribute: .Width, multiplier: 1.0, constant: -8.0).active = true
        NSLayoutConstraint(item: contentView, attribute: .Top, relatedBy: .Equal, toItem: self, attribute: .Top, multiplier: 1.0, constant: 4.0).active = true
        NSLayoutConstraint(item: contentView, attribute: .Height, relatedBy: .Equal, toItem: self, attribute: .Height, multiplier: 1.0, constant: -8.0).active = true

    }


}

这是我收到的输出:

  

无法同时满足约束条件。       可能至少下列列表中的一个约束是您不想要的约束。试试这个:(1)看看每个约束并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它。 (注意:如果您看到您不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性的文档translatesAutoresizingMaskIntoConstraints)   (       “”       “”   )   将尝试通过打破约束来恢复      在UIViewAlertForUnsatisfiableConstraints上创建一个符号断点,以便在调试器中捕获它。   UIView中列出的UIVonstraintBasedLayoutDebugging类别中的方法也可能有所帮助。

根据StackOverflow上发布的解决方案和上面的输出,由于自动布局掩码,似乎会自动添加其他约束(其中一些与我的4个约束冲突)。

但是,按照建议,我设置了translatesAutoresizingMaskIntoConstraints = false,我仍然收到这些冲突。

0 个答案:

没有答案