这是我的代码:
func scrollViewDidScroll(scrollView: UIScrollView) {
if mapHeight.constant < 400 {
mapHeight.constant = 400
tableOfRestaraunts.reloadData()
}
}
func normalSize() {
if mapHeight.constant == 400 {
mapHeight.constant = 200
}
}
当用户滚动 UITableView 时,我的 map 变小,当他触摸任何地方时,它变成默认大小。
我想添加一些动画(这样看起来更流畅)。我已经尝试了一些来自网络的解决方案,但它们没有帮助。有什么建议吗?
最佳答案
与往常一样,您应该调用 layoutIfNeeded
来为布局约束中的更改设置动画。在您的情况下,您应该在包含约束的 View 上调用它(这对我来说不是很明显)。或者在实际动画 block 中使用简单的 self.view.layoutIfNeeded()
:
该示例为您制作动画,动画需要 0.5
秒才能完成。您可以使用 UIView
的动画 block 的重载来更好地控制动画的细节。
func scrollViewDidScroll(scrollView: UIScrollView) {
if mapHeight.constant < 400 {
UIView.animateWithDuration(0.5) { () -> Void in
mapHeight.constant = 400
self.view.layoutIfNeeded()
}
tableOfRestaraunts.reloadData()
}
}
func normalSize() {
if mapHeight.constant == 400 {
UIView.animateWithDuration(0.5) { () -> Void in
mapHeight.constant = 200
self.view.layoutIfNeeded()
}
}
}
更新:我不知道你没有动画 block 。已更新以包含实际的动画 block 。
关于ios - 更改 NSLayoutConstraint 时的 SWIFT 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33870773/