【发布时间】:2015-06-09 16:34:57
【问题描述】:
我需要在我的 iOS 应用中绘制类似下图的东西,除了弧线可能包含更多颜色:
我知道如何绘制它,但我正在寻找一种方法来为路径的绘制设置动画。
有一个类似的问题here,只是圆圈没有动画。 This 是另一个问题,它解释了如何为圆圈设置动画,在我的情况下它工作正常,除了它不处理路径中的多种颜色。
如何做到这一点?
【问题讨论】:
-
我不知道如何以最好的方式做到这一点。但作为临时解决方案,我会创建数量等于您的颜色计数的图层(即 CAShapeLayer)。这些层只是你圈子的一段(弧)。然后遍历它们并一一设置动画。我确信它会工作并且看起来很顺利,没有任何问题。唯一可能让你担心的问题是,也许有一种更优雅的方式来做到这一点
-
@David 感谢您的评论。我在您的解决方案中看到的问题是我不知道如何有效地同步动画
-
这不是一个大问题@Reynaldo Aguilar。当然有一个委托方法(检查动画何时完成),但我记得它会延迟触发,并且不适合后续操作。但是对于这种情况,有一个分组动画(CAAnimationGroup),您只需在其中定义一个一个动画并为每个单独的动画设置开始和结束时间。所以你的任务看起来很简单:1)知道你要使用的颜色的确切数量
-
2) 创建相同数量的 CAShapeLayer "s (弧线,当然它们可以有不同的长度) 并设置 "path" 属性,其中 path 是 UIBezierPath 类型 3) 为每个层定义 CABasicAnimation正确的animationWithKeyPath(@“strokeEnd”),然后设置“fromValue/toValue”属性(这是你的圆长度的值,例如0.5 - 动画圆的一半),设置动画持续时间并将这个动画添加到创建层。4) 将这些动画分组到 CAAnimationGroup 中,然后瞧。可能的示例之一是 MBProgressHUD,它绘制可动画的圆圈。
标签: ios swift animation drawing