我正在使用iOS 12 SDK、Swift 4和SnapKit 4.2构建一个iOS应用程序
当我点击一个按钮时,我想要更新一个约束,但是它会创建一个与以前版本的约束相冲突的约束。
这是我的密码:
private var menuConstraint: Constraint?
override func updateViewConstraints() {
super.updateViewConstraints()
menuVc.view.snp.makeConstraints { (make) in
self.menuConstraint = make.top.equalTo(view.snp.top).constraint
make.right.equalTo(view.snp.right)
make.width.equalTo(100)
make.height.equalTo(100)
}
}
@objc func onMenuTap() {
self.menuConstraint!.update(offset: 100)
}当调用onMenuTap时,我得到以下错误:
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<SnapKit.LayoutConstraint:0xABC@MyViewController.swift#77 UIView:0xDEF.top == UIView:0xGHI.top>",
"<SnapKit.LayoutConstraint:0xABC@MyViewController.swift#77 UIView:0xDEF.top == UIView:0xGHI.top + 100.0>"
)如您所见,top约束的前一个版本(没有偏移量)与新版本相冲突。就好像它没有更新现有的约束,而只是创建了一个新的约束。
我试过几种变体:
snp.updateConstraints闭包中LayoutConstraint并直接更新constant。我总是收到同样的错误信息。
我有配置错误的东西吗?
发布于 2018-11-25 18:09:11
不要在updateViewConstraints中放置约束,因为它会多次重新创建约束,因此在viewDidLoad中设置代码
https://stackoverflow.com/questions/53470239
复制相似问题