CAKeyframeAnimation - 如何停止无限循环

3
我有以下代码来运行一些帧的动画。
- (void)setAnimation {
    /* creating a layer */
    CALayer *layer = [[CALayer alloc] init];
    [layer setBounds:self.bounds];
    [layer setPosition:NSMakePoint(CGRectGetMidX(self.bounds),CGRectGetMidY(self.bounds))];
    [self.layer addSublayer:layer];

    /* creating frames */
    NSArray *array = [appDelegate getAnimationFrames]; // Extracting an array containing NSImage objects from appDelegate

    /* setting up animation */
    keyFrameAnimation = [CAKeyframeAnimation animation]; // A CAKeyframeAnimation object declared in the header file
    [keyFrameAnimation setKeyPath:@"contents"];
    [keyFrameAnimation setValues:array];
    [keyFrameAnimation setCalculationMode:@"discrete"];
    [keyFrameAnimation setRemovedOnCompletion:NO];
    [keyFrameAnimation setRepeatCount:HUGE_VALF];
    keyFrameAnimation.duration = 1.0;
    [layer addAnimation:keyFrameAnimation forKey:nil];
}

这是我第一次使用CAKeyframeAnimation,目前它已经很好地运行着。我唯一的问题是如果将重复计数设置为HUGE_VALF,如何打破循环。在这方面,API文档似乎没有太多帮助,因为如果我搜索“setRepeatCount”,它将返回空值。同时,虽然代码是针对Cocoa应用程序的,但我也会在iOS上打开此主题,因为就这个主题而言,OS X和iOS之间几乎没有区别。

谢谢。

1个回答

3

一旦动画被添加到图层中,图层会创建一个副本,因此对动画对象的进一步更改不会产生任何影响。

您可以使用[layer removeAllAnimations]来停止动画。


嗯...我就是这么想的。我现在会进行测试。 - El Tomato
好的,那就这样吧。我会在30秒后回来,点击“接受”按钮。谢谢。 - El Tomato

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接