使 UIImageView 出现的圆形动画

Posted

技术标签:

【中文标题】使 UIImageView 出现的圆形动画【英文标题】:Circular animation to make UIImageView appear 【发布时间】:2012-09-26 07:43:52 【问题描述】:

我有一个“圆形”图像,类似于饼图。我想要一个漂亮的动画,比如当饼图从 0 填充到值时。

当我想要动画视图时,我通常使用这样的东西:

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

是否可以为圆形动画做同样的事情?我真的不知道该怎么做。

感谢任何线索!

注意:ios 5、故事板、ARC 和所有这些东西 :)


编辑:为了以后的讨论,图像看起来像这样:

【问题讨论】:

【参考方案1】:

好的,就这样吧:)

第一个选项(简单的一个)。您可以使用UIImageViewanimationImages 属性。用动画图像制作NSArray(在你的情况下,圆形图像从0填充到整个圆圈),设置animationDuration,然后调用[imageView startAnimating](我假设你的UIImageViewimageView),并且处理完成后,您可以致电[imageView stopAnimating]

第二: 查看此链接http://www.cocoacontrols.com/platforms/ios/controls/jpradialactivityindicator,我认为示例项目的功能几乎与您尝试做的一样:)

祝你好运;)

【讨论】:

感谢您的回答。例如,如果我只有 10 张图片可以吗?动画会看起来是连续的吗?还是只是一张一张地显示图像并带有一些淡入淡出效果? 顺便说一句,方法是 startAnimating 和 stopAnimating ;) 对不起,我的错 :),我认为 10 张图像应该没问题。. 取决于动画持续时间和图像大小。 这只是动画图像的基本方法,对于高质量的动画,请参阅 Nayan 的回答 :) 谢谢,我必须花一些时间来考虑这两种解决方案...我暂时不回答这个问题,我会在实施其中一个选项后立即接受 :) 【参考方案2】:

1) 您可以使用CAShapeLayer

您可以通过设置 strokeStart 和 strokeEnd 属性的动画来实现。您可以为整个圆创建路径,并使用 strokeStart 和 strokeEnd 属性仅描边圆的特定部分。

2) 另外,你可以参考这个教程:Animating Pie Slices Using a Custom CALayer

祝你好运!!!

【讨论】:

感谢链接。据我了解,它没有使用 UIImages。我必须对它进行更多研究,如果我找不到使用图像的方法,我可能会使用它。感谢您的回答。 我对这个解决方案的问题是它不是我想要显示的复杂饼图,而是更多的环(请参阅我的问题的图像编辑)。对于我想要实现的目标来说,这可能太复杂了......

以上是关于使 UIImageView 出现的圆形动画的主要内容,如果未能解决你的问题,请参考以下文章

如何使 UIView 不出现在背景上但仍出现在 UIImageView (子视图)上

如何显示带有动画的 UIImageview?

使 UIImageView 离开屏幕的动画

iOS UIImageView如何为圆形ImageView添加填充

Xcode - 用户选择后图像未出现在 UIImageView 中

使 UIImageView 使用解析后的照片进行动画处理