循环动画使UIImageView显示

4

我有一张"圆形"图片,类似于饼图。我想要一种漂亮的动画效果,就像一个饼图从0到目标数值自动填充的样子。

通常在我想要对视图进行动画处理时,我会使用类似以下方式的代码:

[UIView animateWithDuration: 3.0 
                      delay: 0.0 
                    options: UIViewAnimationCurveEaseInOut 
                 animations: ^ {
                             // The animation
                     } 
                 completion: ^(BOOL finished) {
                             // On completion
                     } ];

有没有可能对圆形动画做同样的事情?我真的不知道怎么做。

谢谢任何提示!

注意:iOS 5,storyboards,ARC等等 :)


编辑:为了未来的讨论,图片如下:

enter image description here

2个回答

3

好的,开始翻译:

第一种选择(简单的)。您可以使用UIImageViewanimationImages属性。创建一个包含动画图像的NSArray(在您的情况下,是从0到完整圆形填充的循环图像),设置animationDuration,并调用[imageView startAnimating](我假设您的UIImageViewimageView),当进程完成时,您可以调用[imageView stopAnimating]

第二种选择: 请查看此链接http://www.cocoacontrols.com/platforms/ios/controls/jpradialactivityindicator,我认为该示例项目几乎与您尝试执行的操作相同 :)

祝你好运 ;)


谢谢你的回答。如果我只有10张图片,会有问题吗?动画看起来会连续吗?还是只会一个接一个地显示图片,并带有一些淡入淡出的效果? - rdurand
顺便提一下,这些方法分别是startAnimating和stopAnimating ;) - rdurand
抱歉,我的错 :),我认为使用10张图片应该没问题...这取决于动画持续时间和图像大小。 - Fahri Azimov
如果你想得到相同的结果,你必须玩弄第二个选项的源代码。你可以在被绘制的线的开头和结尾放置圆圈。 - Fahri Azimov
我想我会选择DACircularProgress。感谢您的帮助和研究! - rdurand
显示剩余4条评论

2

1) 您可以使用CAShapeLayer

  • 您可以通过动画化strokeStart和strokeEnd属性来实现它。您可以创建完整圆形的路径,并使用strokeStart和strokeEnd属性仅绘制圆形的某一部分。

2) 此外,您可以参考这个教程:使用自定义CALayer动画饼片

祝好运!!!


感谢提供的链接。据我所知,它没有使用UIImages。我需要再仔细研究一下,如果无法使用图像完成,我可能会使用它。感谢您的回答。 - rdurand
我对这个解决方案的问题在于,我想要展示的不是一个复杂的饼图,而更像是一个环形(请参见我的问题编辑中的图片)。这可能对我想要实现的目标来说过于复杂了... - rdurand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接