gpt4 book ai didi

objective-c - CALayer 不透明度动画

转载 作者:太空狗 更新时间:2023-10-30 03:14:04 25 4
gpt4 key购买 nike

我想创建一个 CALayer 动画来提供某种“华丽”的效果。为此,我正在尝试为“不透明度”属性设置动画,但我的问题是我不知道从哪里开始以及如何去做。

这是动画的图形解释:

opacity
| ___
1 | | |
| | | * repeatCount
0 |___| |_ . . .
-------------------------> time
|______|
duration

不透明度从 0 开始,然后变为 1,然后再次变为 0(这个 0 到 1 到 0 的动画需要的秒数等于持续时间)。然后这个过程重复 'repeatCount' 次。

这里是代码的一些背景:

float duration = ...; // 0.2 secs, 1 sec, 3 secs, etc
int repeactCount = ...; // 1, 2, 5, 6, ect

CALayer* layer = ...; // I have a CALayer from another part of the code
layer.opacity = 0;

// Animation here

done = YES; // IN THE END of the animation set this ivar to yes

实现此目标的最佳方法是什么?我以前从未使用过 CALayers,所以这也是了解他们的动画系统如何工作的好机会。顺便说一下,我已经搜索了文档并且我了解您如何添加一两个简单的动画,但我不知道如何做这个特定的动画。

最佳答案

实现此目的的最佳方法是通过创建 CABasicAnimation 实例并将其添加到图层来使用显式动画(参见 guide)。

代码看起来像这样:

CABasicAnimation *flash = [CABasicAnimation animationWithKeyPath:@"opacity"];
flash.fromValue = [NSNumber numberWithFloat:0.0];
flash.toValue = [NSNumber numberWithFloat:1.0];
flash.duration = 1.0; // 1 second
flash.autoreverses = YES; // Back
flash.repeatCount = 3; // Or whatever

[layer addAnimation:flash forKey:@"flashAnimation"];

如果您想知道动画何时完成,您可以设置一个委托(delegate)并实现 animationDidStop:finished: 方法,但是最好使用完成 block ,因为它允许所有代码在同一个地方。如果您正在为 iOS 4 或 OS X 编写,那么您可以使用优秀的 CAAnimationBlocks类别来实现这一点。

关于objective-c - CALayer 不透明度动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12448847/

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