gpt4 book ai didi

ios - 我可以设置一个 block 在 CATransaction 期间每帧更新执行吗?

转载 作者:行者123 更新时间:2023-11-28 21:32:02 26 4
gpt4 key购买 nike

我想在动画时更新 CATransformLayer 子层的颜色。有没有办法设置一个 block 在动画 CATransaction 期间的每个帧更新时执行?如果不是,在动画期间更新子图层颜色的最佳方法是什么?

[CATransaction begin];
[CATransaction setAnimationDuration:duration];
// The imaginary functionality of the following imaginary code is what I want to implement--though not at all in any form that resembles its imaginary form below
[CATransaction setBlockThatExecutesPerFrameUpdate:^{
for ( CALayer *layer in self.transformLayer.sublayers )
[layer doSomethingWith:layer.presentationLayer.transform];
}];
// What I imagine ends here
self.transformLayer.transform = [self sideTransform];
[CATransaction commit];

最佳答案

动画发生在主线程之外的自己的进程(“动画服务器”)中。在动画期间,没有任何类型的通知会以每帧为基础返回到“您的”代码,这是正确的,因为这会冒着无法忍受地减慢动画速度的风险,更不用说可能会干扰您的代码了。如果您希望颜色在其他动画进行的同时发生变化,只需将颜色变化设置为与其他动画相同的持续时间即可。您可以请求多个动画,当动画服务器获得控制权时,它们将一起发生。

关于ios - 我可以设置一个 block 在 CATransaction 期间每帧更新执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35613836/

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