我在DispatchQueue.main.async上使用snapKit以编程方式设置约束。但我注意到,main.async有时会导致冻结UI,因此我更改了使用它的方法。现在,我在使用动态高度时遇到了问题,旧的方法在试图使动态高度取决于内容时会产生错误。
旧方法 (innerView -是视图的子视图)
DispatchQueue.main.async {
view.snp.makeConstraints({ (make) in
make.top.equalToSuperview().inset(45)
make.left.right.equalToSuperview().inset(12)
make.bottom.equalTo(self.innerView.snp.bottom).offset(12)
})
}
//After i add it like superView.addSubView(view)
//superView contains view, and view(dynamic height) contains innerView新方法
superView.addSubview(view)
view.snp.makeConstraints({ (make) in
make.top.equalToSuperview().inset(45)
make.left.right.equalToSuperview().inset(12)
make.bottom.equalTo(self.innerView.snp.bottom).offset(12)
})

发布于 2019-05-24 12:56:14
我发现了问题,以防有人需要.添加make.bottom.equalTo(self.innerView.snp.bottom).offset(12),后,添加所有的superview约束,它将工作!
发布于 2019-05-20 12:42:16
在设置约束之前,必须同时添加两者
superView.addSubview(view)
superView.addSubview(innerView) // or view.addSubview(innerView) if it's nested UI
view.snp.makeConstraints({ (make) in
make.top.equalToSuperview().inset(45)
make.left.right.equalToSuperview().inset(12)
make.bottom.equalTo(self.innerView.snp.bottom).offset(12)
})https://stackoverflow.com/questions/56220536
复制相似问题