是removeAllAnimations然后添加动画的方式去?

时间:2012-03-02 17:19:09

标签: iphone

一些顾问为我们构建了一些代码。我正在研究他们为UIView子类编写的方法。它基本上是这样的:

- (void)startAnimation {
   [self.circle removeAllAnimations];

   // then some animation code for the circle.  The circle is a CAShapeLayer.
   [self.circle addAnimation:group forKey:@"animationPath"];
}

两个问题,这是实现动画的好方法吗?喜欢先删除所有动画,然后添加它?我想知道这是一个昂贵的操作,总是首先删除动画,因为在应用程序的其他地方的另一个for循环,它基本上看着对象,只是调用:

for (id points in pointsArray) {
   [points startAnimation];
}

我想知道是否盲目删除动画并将它们添加回来,而不检查点对象是否已经动画是否正常以及我是否会受到性能影响。

另外,有没有办法检查一些动画是什么?查看代码,动画将启动所有对象。但是,如果它们位于屏幕之外(因为它位于scrollView中并且当前不在视图中),即使在创建每个对象并将其添加到视图时对每个对象调用startAnimation,对象也不会设置动画。感谢。

1 个答案:

答案 0 :(得分:0)

就个人而言,我不认为这是一种糟糕的工作方式,确保在添加你的动画之前删除可能正在运行的所有动画,但正如我所说,这是个人意见。

我认为这不会是一个非常糟糕的性能打击,特别是考虑到可能在那一刻,没有动画正在运行,但正如我所说,这只是个人的。

另一方面,如果你检查苹果开发人员指南,它似乎它会删除动画

https://developer.apple.com/library/ios/#documentation/windowsviews/conceptual/viewpg_iphoneos/animatingviews/animatingviews.html