gpt4 book ai didi

ios - swift 3 layoutIfneeded 无法正常工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:22:48 26 4
gpt4 key购买 nike

要为带有约束的 uiview 制作正确的动画,您必须设置新的约束值,然后调用 theView.layoutIfNeeded() ,对于 swift 3 这不起作用,而不是从 View 的 whos 约束调用被改变了。它必须像这样从上层 View 调用: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
// ....
})

问题是,在我的例子中,我做了改变,我使用这个动画的方式是用于底部 View (底部栏/横幅 View ),它在向下滚动表格 View 时隐藏,并在一直到顶部在 TableView 中。现在我已经使用 self.view.layoutIfNeeded() 更改了 swift 3 的正确代码,当向下和向上滚动 tableview 的部分时,tableview 表现得很奇怪,速度变慢,行开始出现淡入或显示速度很慢以慢动作跳跃或移动,似乎内存也从 80mb 增加到 100mb。如果我删除代码中的行,我不会得到动画, View 只是出现并随着 tableview 的滚动而消失,但是......我没有得到奇怪的行为。我还检查了 View 层次结构,以检查是否以某种方式创建了奇怪的 100 个 View 复制或其他内容。关于如何解决此问题的任何提示。所有这一切在 swift 2 中使用 View.layoutIfneeded() 都可以正常工作,但现在调用是在上层 View 中进行的..天啊..奇怪的行为

问题来自Swift 3 UIView animation解决方案。

最佳答案

试试这个来强制改变父 View 的布局

//Force to complete all changes.
self.view.superview.layoutIfNeeded()

//Update constant
constraintHeight.constant = 10.00

UIView.animate(withDuration: 0.1,
delay: 0.1,
options: UIViewAnimationOptions.curveEaseIn,
animations: { () -> Void in
self.view.superview.layoutIfNeeded()
}, completion: { (finished) -> Void in
// ....
})

关于ios - swift 3 layoutIfneeded 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40132019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com