【问题标题】:How do I make this animation go counterclockwise?如何让这个动画逆时针旋转?
【发布时间】:2015-07-10 20:46:11
【问题描述】:

我已经完成了部分动画。我想做的是创建像this 这样的线条边框动画,线条穿过矩形的顶部和右侧。除此之外,我还需要创建另一条线,以逆时针方向镜像视频中显示的线(穿过矩形的左侧然后底部)。我尝试使用 -bezierPathByReversingPath(_:) 函数执行此操作,但它使线的原点从矩形的左下角开始。我不知道该怎么做,任何帮助将不胜感激! 这是我的代码:

// Create layer
rightLine = CAShapeLayer()
rightLine.bounds = centerButton.bounds
rightLine.position = view.center
rightLine.path = UIBezierPath(rect: rightLine.bounds).CGPath
rightLine.lineWidth = 3
rightLine.strokeColor = UIColor(hex: "3D424E").CGColor
rightLine.fillColor = UIColor.clearColor().CGColor
rightLine.strokeStart = 0
rightLine.strokeEnd = 0

// Create animation
let rightStart = CABasicAnimation(keyPath: "strokeStart")
rightStart.toValue = 0
let rightEnd = CABasicAnimation(keyPath: "strokeEnd")
rightEnd.toValue = 0.5

rightLineGroup = CAAnimationGroup()
rightLineGroup.animations = [rightStart, rightEnd]
rightLineGroup.duration = 1.5
rightLineGroup.autoreverses = true
rightLineGroup.repeatCount = HUGE // repeat forever

self.view.layer.addSublayer(rightLine)
rightLine.addAnimation(rightLineGroup, forKey: nil)

【问题讨论】:

  • 你是否尝试过 strokeStart/rightStart 的负值?
  • 不。 strokeStartstrokeEnd 只允许从 0.0 到 1.0。

标签: ios xcode swift uibezierpath caanimation


【解决方案1】:

动画strokeStart 从零到零什么都不做。

您可能希望将strokeEnd 保留为1.0(默认)并将strokeStart1.0 动画化到0.5。这应该会产生预期的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多