我试图以圆形方式围绕矩形创建点。 为此,我创建了一个椭圆UIBezierPath,创建了一个CAKeyFrameAnimation并为keyPath'position'设置路径。CAKeyFrameAnimation在使用CGPath时没有动画效果
我设置了一个项目来试验动画并获得了很好的效果。 问题是,当我将代码添加到我的应用程序中时,点不是动画。 我试图添加相同的代码到其他应用程序,它工作得很好。它不适用于那一个应用程序。
奇怪的是,如果我通过包含CGPoint的值的数组替换路径,那么点动画。它只是不适用于CGPath的特定应用程序。
是否有隐藏的设置某处阻止CAKeyFrameAnimation使用CGPath? 还有另一种方法可以做到吗?使用值不像曲线那样曲线很好。
这里是我以前没有什么帮助的代码:
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"];
就像我说的,此代码的工作,只是没有在这一个应用程序。 这是我在这里的第一篇文章,对不起,如果它配制不好。
路径很好,我验证了很多次。我甚至尝试过其他路径和其他图层。另外,当我将其添加到其他项目时,该代码也可以工作看起来问题在于这个项目。某些东西必须关闭路径上的层动画,或者它是Apple的错误,我真的不知道。 –
这看起来很奇怪,如果没有经过该项目的其余代码,就很难指出问题所在,否则就会出现bug。我唯一能想到的其他问题是foregroundDot是否支持视图?因为那么你需要在动画块内部调用它来工作。如果它只是一个独立的层,那么我不知道。 – dunkmann00
foregroundDot是一个CAShapeLayer,作为我在屏幕上显示的视图的子图层添加。动画的子层的位置应该没问题。正如你所看到的,无论如何它都是在动画块中调用的。 –