我试图以圆形方式围绕矩形制作一个点。 为此我创建了一个椭圆形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"];
就像我说的,这段代码可以运行,而不是在这个应用程序中。 这是我在这里的第一篇文章,对不起,如果它的配方很差。
答案 0 :(得分:0)
也许foregroundArcPath是nil或空路径?
我为回答细节而道歉。我本来会评论,但我还不能那样做。
答案 1 :(得分:0)
我遇到了与你一样的问题。也许您的项目会导入一些NSObject覆盖类,例如RMMapper。
-(instancetype)copyWithZone:(NSZone *)zone {
typeof(self) copiedObj = [[[self class] allocWithZone:zone] init];
CGPath不适合复制区域。
希望这篇技巧能为您提供帮助。