gpt4 book ai didi

ios - 更改固有大小时动画 NSLayoutConstraint 出现问题

转载 作者:行者123 更新时间:2023-11-28 06:38:04 25 4
gpt4 key购买 nike

我正在尝试在 UIView 子类中编排一些动画,这些动画需要更改 View 的固有大小。

CATransaction 完成 block 中,我调用 invalidateIntrinsicContentSize() 来反射(reflect)大小的变化,并在我为约束设置动画之后立即调用。

self.layoutIfNeeded()
UIView.animateWithDuration(2) {
NSLayoutConstraint.deactivateConstraints(oldConstraints)
NSLayoutConstraint.activateConstraints(newConstraints)
self.layoutIfNeeded()
}

但是一件奇怪的事情发生了,随着为 deactivateConstraintsactivateConstraints 方法提供的约束,我还看到 View 的大小在相同的持续时间内被动画化。

这是一个实际操作的视频。

https://www.youtube.com/watch?v=OgM378Wryd0

这是问题的图表。

enter image description here

我的意图是立即更改 View 的大小,而不是将其与定位约束一起设置动画。

最佳答案

一个最终可行的解决方案是将初始 layoutIfNeeded() 调用包装在一个动画 block 中,然后在完成时启动位置动画。

UIView.animateWithDuration(2, animations: { self.layoutIfNeeded() }) {
UIView.animateWithDuration(2) {
NSLayoutConstraint.deactivateConstraints(oldConstraints)
NSLayoutConstraint.activateConstraints(newConstraints)
self.layoutIfNeeded()
}
}

它看起来不太漂亮,因为我实际上并没有为尺寸变化设置动画,我希望它们立即发生。因此,我仍在寻找一种优雅的解决方案,或者寻找无法找到解决方案的原因。

关于ios - 更改固有大小时动画 NSLayoutConstraint 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38651278/

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