【发布时间】:2024-01-19 16:10:01
【问题描述】:
要使带有约束的 uiview 正确动画,您必须设置新的约束值,然后调用 theView.layoutIfNeeded() ,for swift 3 这不起作用,而不是从视图的 whos 约束中调用被改变了。它必须像这样从上视图调用:self.view.layoutIfNeeded()。 例如:
UIView.animate(withDuration: 0.1,
delay: 0.1,
options: UIViewAnimationOptions.curveEaseIn,
animations: { () -> Void in
constraintHeight.constant = 10.00
// instead of myView.layoutIfNeeded() // Swift 2
self.view.layoutIfNeeded() // Swift 3
}, completion: { (finished) -> Void in
// ....
})
问题是,在我的情况下,我进行了更改,我使用此动画的方式是用于底部视图(底部栏/横幅视图),它在向下滚动 tableview 时隐藏并在一直到在 tableview 顶部。现在我已经使用 self.view.layoutIfNeeded() 更改了 swift 3 的正确代码,当向下和向上滚动 tableview 的部分时,tableview 行为怪异、变慢、行开始淡入或呈现速度很慢以慢动作跳跃或移动,似乎内存也从 80mb 增加到 100mb 。如果我消除代码中的行,我没有得到动画,视图只是出现并随着 tableview 的滚动而消失,但是......我没有得到奇怪的行为。我还检查了视图层次结构以检查是否没有创建奇怪的 100 个视图复制或其他东西.. 关于如何解决这个问题的任何提示。所有这一切都在 swift 2 中使用 View.layoutIfneeded() 运行良好,但现在调用是在上视图中进行的.. omg..wierd 作用
问题来自Swift 3 UIView animation 解决方案。
【问题讨论】:
标签: ios animation uiview swift3 uiviewanimation