gpt4 book ai didi

ios - addCooperativeAnimations 动画 block 未运行

转载 作者:行者123 更新时间:2023-11-30 13:08:02 25 4
gpt4 key购买 nike

在 Xcode 7.3.1 上的 tvOS 中,我使用 UIFocusAnimationCoordinator 的 addCooperativeAnimations 函数的地方之一是在动画之前运行完成:

if (coordinator != nil) {
var tempDidAnimate: Bool = false // breakpoint 1
coordinator!.addCoordinatedAnimations({
self.myFunctionThatDoesntGetCalled() // breakpoint 2
tempDidAnimate = true
}, completion: {
() in
if tempDidAnimate == false {
print("whaaaat?!??") // breakpoint 3
self.myFunctionThatDoesntGetCalled()
}
})
}

断点被击中的顺序是 1、3。绝不会是 2。

这种对 if tempDidAnimate == false 的巧妙使用确实解决了问题,但我不明白为什么会出现问题。

有什么想法可能是错误的吗?

一个想法:我已经在堆栈中的 addCooperativeAnimations block 内...我不这么认为,但是堆栈很复杂...看不到任何通过代码检查的方法。

最佳答案

tl;dr:是的,我已经在动画 block 中了#$&^@#$!

好吧,事实证明,在我“巧妙”重构的代码中,我忘记了我正在调用动画 block 来重置任何当前事件的自动布局动画(通过请求持续时间为 0 的新动画)。然后在该完成中,我上面的代码被调用...由于我正式已经在动画 block 内,操作系统拒绝执行上面的主动画 block ,并直接跳到完成。不知道此操作系统行为是否记录在任何地方。

关于ios - addCooperativeAnimations 动画 block 未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39106930/

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