我每次点击UIViewController
时都会触发UITabBarButtonItem
。问题在于它是一种菜单,包含从屏幕底部向上滑动的UIView
。
现在,最初,底部约束设置为-500,因此它不在屏幕上。我创建了一个函数,通过一些动画将约束设置回100。问题是我想如果我在viewWillAppear()
中调用该函数,它每次都会被动画化。但事实并非如此。我还尝试将约束重置回viewDidDisappear()
中的-500,以便在下次触发之前将其关闭。
不起作用。它只是第一次工作。我想念一些东西,或者我在错误的地方叫它......
class PostVC: UIViewController {
@IBOutlet weak var menuBottomConstraint: NSLayoutConstraint!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
animateMenu()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
menuBottomConstraint.constant = -500
}
func animateMenu() {
menuBottomConstraint.constant = 100
UIView.animate(
withDuration: 1.0,
delay: 0.0,
usingSpringWithDamping: 0.5,
initialSpringVelocity: 0.0, options: .curveEaseOut,
animations: {
self.view.layoutIfNeeded()
},
completion: nil
)
}
}
答案 0 :(得分:1)
每当您更改constant
的{{1}}值时,您都会看到效果,那么您必须调用Constraint
方法。
:
layoutIfNeeded()
我还建议将override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
menuBottomConstraint.constant = -500
self.view.layoutIfNeeded()
}
函数替换为viewWillAppear