以下功能只是将视图移动到新位置。它没有显示动画:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIView.animate(withDuration: 0.9, animations: {
//self.leadingConst.constant -= 200
self.view.setNeedsLayout()
})
}
答案 0 :(得分:1)
几周前我遇到了同样的问题。问题归结为一些问题。我正在混合以编程方式添加视图并将它们添加到故事板,我没有调用layoutSubviews(),而我将我的约束作为IBOutlets添加为弱变量。所以我建议只使用故事板(否则动画开始快速复杂化)并使你的leadingConst约束成为var。您还应该在动画块中移动要设置动画的对象,然后使用完成块重置约束。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
view.layoutSubviews()
UIView.animate(withDuration: 0.9, animations: {
//something like this
self.animatableObject.origin.x -= 200
}, completion: {(finished: Bool) in
self.leadingConst.constant -= 200
})
}
我不确定你想要制作什么动画,所以origin.x行只是一个例子。
答案 1 :(得分:0)
self.leadingConst.constant -= 200
应该在UIView.animate
之外,如下所示:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.leadingConst.constant -= 200
UIView.animate(withDuration: 0.9, animations: {
self.view.setNeedsLayout()
})
}