通过center属性移动其父UIView时动画CAShapeLayer

时间:2010-11-17 17:20:01

标签: iphone core-animation

更新:

这里没有问题。结果我每次移动点都重新添加动画。在代码中的其他地方,我只是完全掩盖了它。请忽略这个问题。

结束更新

我有一个UIView,它只是作为UIImageView和CAShaperLayer的容器。形状图层正在绘制一个圆形,我已经为该形状图层添加了一个路径动画以使其成为脉冲。我希望能够使用UIView的center属性同时脉冲圆圈并移动容器视图。但是,当我在容器UIView上设置center属性时,无论它在动画中的位置如何,脉冲动画都会从它开始重新开始。

如何阻止脉冲动画重启?

脉冲动画:

CGRect startRect = CGRectMake(-10 + (self.bounds.size.width / 2),
                              -10 + (self.bounds.size.height / 2),
                              20,
                              20);

CGMutablePathRef fromPath = CGPathCreateMutable();
CGPathAddEllipseInRect(fromPath, NULL, startRect);

CGRect endRect = CGRectMake(-20 + (self.bounds.size.width / 2),
                            -20 + (self.bounds.size.height / 2),
                            40,
                            40);

CGMutablePathRef toPath = CGPathCreateMutable();
CGPathAddEllipseInRect(toPath, NULL, endRect);

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];
animation.fromValue = (id)fromPath;
animation.toValue = (id)toPath;

CGPathRelease(fromPath);
CGPathRelease(toPath);

animation.duration = 2.0f;
animation.repeatCount = HUGE_VALF;

[self.myCircleLayer addAnimation:animation forKey:self.pathAnimationKey];

我通过执行以下操作来移动容器视图:

self.myContainerView.center = newPoint;

1 个答案:

答案 0 :(得分:0)

请参阅上面的更新。事实证明这里没有问题。