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 自动布局损坏:“无法同时满足约束”的主要内容,如果未能解决你的问题,请参考以下文章