Swift SnapKit 动态高度问题
Swift SnapKit dynamic height issue
我在 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)
})
您必须在设置约束之前添加两者
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)
})
我发现了问题,以防万一有人需要它...添加 make.bottom.equalTo(self.innerView.snp.bottom).offset(12),在添加所有超级视图约束后它会起作用!
我在 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)
})
您必须在设置约束之前添加两者
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)
})
我发现了问题,以防万一有人需要它...添加 make.bottom.equalTo(self.innerView.snp.bottom).offset(12),在添加所有超级视图约束后它会起作用!