使用CGPath时,CAKeyFrameAnimation不是动画

时间:2016-05-14 02:24:16

标签: ios cakeyframeanimation

我试图以圆形方式围绕矩形制作一个点。 为此我创建了一个椭圆形UIBezierPath,创建了一个CAKeyFrameAnimation并设置了keyPath'position'的路径。

我设置了一个项目来试验动画并获得了很好的效果。 问题是,当我将代码添加到我的应用程序时,点不是动画。 我试图将相同的代码添加到其他应用程序,它工作得很好。它不适用于那个应用程序。

奇怪的是,如果我用包含CGPoint的值数组替换路径,那么点动画。它只适用于特定应用程序的CGPath。

是否存在使用CGPath阻止CAKeyFrameAnimation的隐藏设置? 还有另一种方法吗?使用值时,它不像路径那样曲线很好。

以下是我使用的代码,如果有帮助的话:

CAKeyframeAnimation *orbit = [CAKeyframeAnimation animation];
orbit.keyPath = @"position";
orbit.path = [self foregroundArcPath].CGPath;
orbit.duration = 0.7f;
orbit.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
orbit.repeatCount = HUGE_VALF;
orbit.calculationMode = kCAAnimationPaced;
[self.foregroundDot addAnimation:orbit forKey:@"orbit"];

就像我说的,这段代码可以运行,而不是在这个应用程序中。 这是我在这里的第一篇文章,对不起,如果它的配方很差。

2 个答案:

答案 0 :(得分:0)

也许foregroundArcPath是nil或空路径?

我为回答细节而道歉。我本来会评论,但我还不能那样做。

答案 1 :(得分:0)

我遇到了与你一样的问题。也许您的项目会导入一些NSObject覆盖类,例如RMMapper。

    -(instancetype)copyWithZone:(NSZone *)zone {
         typeof(self) copiedObj = [[[self class] allocWithZone:zone] init];

CGPath不适合复制区域。

希望这篇技巧能为您提供帮助。