SnapKit 自动布局损坏:“无法同时满足约束”

Posted

技术标签:

【中文标题】SnapKit 自动布局损坏:“无法同时满足约束”【英文标题】:SnapKit autolayout broken: "Unable to simultaneously satisfy constraints" 【发布时间】:2016-04-08 07:05:36 【问题描述】:

UICollectionView 单元格中的两个视图。 UIImageView 和 UIView 。像这样:layout

但是当我做约束时,我得到一个错误:

不能同时满足约束

    imgView.snp_makeConstraints  make in
        make.top.equalTo(contentView)//.inset(K.Space.Small)
        //make.bottom.equalTo(self.descView.snp_top)//.inset(K.Space.Small.negative())
        make.left.right.equalTo(contentView)
    

    descView.snp_makeConstraints  make in
        make.bottom.equalTo(contentView)
        make.left.right.bottom.equalTo(contentView)
        make.height.equalTo(44)
        make.top.equalTo(imgView.snp_bottom)
    

错误: error

为什么?

编辑:在 vc viewDidLoad 方法中初始化集合视图。 【layout.itemSize】 当第一次出现 ViewController 错误时。但向下滚动没有错误。

    let collectionContentInset = UIEdgeInsets(top: 0, left: 12, bottom: 0, right: 12)
    var collectionItemSize = DXLayoutSize(aspectRatio: 1.35)
    collectionItemSize.containerInset = collectionContentInset

    let layout = UICollectionViewFlowLayout()
    layout.itemSize = collectionItemSize.itemSize()
    layout.minimumInteritemSpacing = 6;
    layout.minimumLineSpacing = 0;

    collectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: layout)
    collectionView!.backgroundColor = DXUIColor.Background.color()
    collectionView!.showsHorizontalScrollIndicator = false

    collectionView!.contentInset = collectionContentInset

【问题讨论】:

我相信这是因为您将 descView 的顶部设置为 imgView 的底部,但仍要求 descView 的高度为 44 并保持固定在 contentView 的底部。这限制太多了。 【参考方案1】:

查看错误信息。它说你有一个NSAutoResizingMaskLayoutConstraint,它将contentView 的高度和宽度设置为0。只需禁用通过自动调整掩码创建约束:

contentView.translatesAutoresizingMaskIntoConstraints = false

【讨论】:

谢谢你的回答。但我设置了contentView.translatesAutoresizingMaskIntoConstraints 。结果不好。 ImageView 的宽度和高度不受约束。我发现如果我给 imageview 的高度一个数字。它工作正常。但如果自动布局底部到 UIView 顶部。不工作 这帮助了我...虽然不是手动将 .translatesAutoresizingMaskIntoConstraints 设置为 false (这消除了错误但弄乱了我的单元格布局)我最终在我的 contentView 上设置了 snap kit 约束摆脱了我的错误,我的布局看起来仍然不错。谢谢!

以上是关于SnapKit 自动布局损坏:“无法同时满足约束”的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式应用自动布局约束时无法同时满足约束

自动布局警告,无法同时满足约束

自动布局无法同时满足约束[重复]

UITableViewCell - 无法同时满足约束

自动调整 UITableViewCell 大小:无法同时满足约束

无法同时满足约束 - Swift