gpt4 book ai didi

cocoa - 将 CAAnimation 实例添加到图层后,可以通过修改它来重用它吗?

转载 作者:行者123 更新时间:2023-12-03 16:12:58 25 4
gpt4 key购买 nike

这很有趣......我认为这样做

CABasicAnimation* a = [CABasicAnimation animationWithKeyPath:@"opacity"];
a.fromValue = [NSNumber numberWithFloat:0.];
a.toValue = [NSNumber numberWithFloat:1.];
a.duration = .4;
a.fillMode = kCAFillModeBoth;
a.removedOnCompletion = NO;

CGFloat timeOffset = 0;
for(CALayer* layer in layers)
{
a.beginTime = [someCommonSuperView.layer convertTime:CACurrentMediaTime()fromLayer:nil] + timeOffset;
[layer addAnimation:a forKey:nil];
timeOffset += .4;
}

我实际上总是修改相同的 CABasicAnimation 的 beginTime 并只是增加其引用计数。这样我就不会得到一系列层一个接一个地淡入的效果,而是应该弄乱所有层的开始时间,可能导致所有层在最后一层时立即出现。但上面的代码实际上似乎是有效的,因为图层是按顺序淡入的。

那么以这种方式重用动画有意义吗?这样就不会在每次传递时创建它的新实例?

addAnimation 实际上是对动画进行深层复制而不是增加引用计数吗?

最佳答案

根据the docs :

- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key

Add an animation object to the receiver’s render tree for the specified key.

Parameter anim:

The animation to be added to the render tree. Note that the object is copied by the render tree, not referenced. Any subsequent modifications to the object will not be propagated into the render tree.

所以我想说重用相同的 CAAnimation 对象是安全的。

关于cocoa - 将 CAAnimation 实例添加到图层后,可以通过修改它来重用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10289038/

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