Swift   发布时间:2022-04-29  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – 为什么layoutIfNeeded()允许在更新约束时执行动画?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两种状态的UIView:

我使用@IBACtion for button在它们之间有动画:

@IBACtion func tapped(sender: UIButton) {
    flag = !flag
    UIView.animateWithDuration(1.0) {
        if self.flag {
            NSLayoutConsTraint.activateConsTraints([self.myconstraint])
        } else {
            NSLayoutConsTraint.deactivateConsTraints([self.myconstraint])
        }
        self.view.layoutIfNeeded() //additional line
    }
}

动画仅在我添加其他行时才有效:

但当我删除该行时,我的UIView被更新但没有任何动画,它立即发生.

为什么这条线会有这样的差异?它是如何工作的?

解决方法

据我了解,更改约束不会立即更新视图的布局.它对更改进行排队,它们仅在下次系统更新布局时进行.

通过将layoutIfNeeded放在动画块中,它会强制在动画块期间应用视图更改.否则它们会在动画设置完成后发生.

大佬总结

以上是大佬教程为你收集整理的swift – 为什么layoutIfNeeded()允许在更新约束时执行动画?全部内容,希望文章能够帮你解决swift – 为什么layoutIfNeeded()允许在更新约束时执行动画?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。