【发布时间】:2020-11-12 04:23:10
【问题描述】:
我尝试为我的视图制作动画,但如果只是在第一次工作 isOpen = true 它工作但当我再次调用我的函数时 isOpen = false 什么都没有改变?
Perent 视图是自我的(UIView)。孩子是标签(UILabel)。
private func expansionView(isOpen: Bool) {
if isOpen {
label.backgroundColor = .white
NSLayoutConstraint.activate([
label.centerYAnchor.constraint(equalTo: self.topAnchor),
label.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 15),
])
UIView.animate(withDuration: 1, animations: {
self.layoutIfNeeded()
}) { (_) in
}
} else {
label.backgroundColor = .clear
NSLayoutConstraint.activate([
label.centerYAnchor.constraint(equalTo: self.centerYAnchor),
label.leadingAnchor.constraint(equalTo: self.leadingAnchor , constant: 15),
])
UIView.animate(withDuration: 1, animations: {
self.layoutIfNeeded()
}) { (_) in
print("Animation Completed!!!")
}
}
}
【问题讨论】:
-
第二次在调试中遇到约束中断?
-
在我的调试控制台中说可能以下列表中的至少一个约束是您不想要的。试试这个:(1)查看每个约束并尝试找出您不期望的; (2) 找到添加了一个或多个不需要的约束的代码并修复它。将尝试通过打破约束来恢复 <0x60000056c910 uilabel:0x7fc61e605620 authtextfield.authfield:0x7fc61fb04ed0.centery>0x60000056c910>
标签: swift animation layout constraints