6

在我的 iOS 5 应用程序中,我有一个UIButton以红色球体为图像的自定义项。点击按钮时,我希望球体开始在红色和绿色之间跳动/褪色。我有红色和绿色图像,并且可以使用以下代码在两者之间成功交叉溶解:

CABasicAnimation *imageSwitchAnimation = [CABasicAnimation animationWithKeyPath:@"contents"];       
imageSwitchAnimation.fromValue = (id)[UIImage imageNamed:@"red.png"].CGImage;
imageSwitchAnimation.toValue = (id)[UIImage imageNamed:@"green.png"].CGImage;
imageSwitchAnimation.duration = 1.5f;        
[self.button.imageView.layer addAnimation:imageSwitchAnimation forKey:@"animateContents"];

但是,我希望动画永远继续下去(好吧,直到我告诉它停止),也希望动画能够反转和循环。换句话说,淡出红色 -> 绿色 -> 红色,然后重复。

我尝试将上面的动画块放入一个无限循环中(连同一些逻辑来确定褪色是应该从红色 -> 绿色还是绿色 -> 红色),但这只会锁定整个应用程序。

其他解决方案似乎使用 Cocos2d,它似乎相当重量级,因为这是我在应用程序中唯一需要的动画(所以我不想使用这样的框架,除非绝对需要)。

任何帮助将不胜感激。

4

1 回答 1

26

是的,您可以在CABasicAnimation. 诀窍是它的许多最重要的方法不在CABasicAnimation 类参考中,甚至不在它的超类中。CABasicAnimation 实现了一个名为CAMediaTiming. 请参阅CAMediaTiming 协议参考

您想特别了解两个属性:autoreversesrepeatCount。两者都是不言自明的,但是如果您想要无限重复怎么办?从条目中repeatCount

可能是分数。如果repeatCount 为0,则忽略它。默认为 0。如果同时指定了 repeatDuration 和 repeatCount,则行为未定义。

将此属性设置为 HUGE_VALF 将导致动画永远重复。

你能从那里解决吗?

于 2012-04-15T10:53:32.953 回答