如何将UIBezierPath rect的起点和终点更改为CAShapeLayer

时间:2017-12-28 10:08:31

标签: ios swift uibezierpath cashapelayer cabasicanimation

我想在我的对象周围创建一个矩形图层的进度条,它可能是uibutton,uiview或任何对象,所以我创建了一个下面的代码:

let layer_ca = CAShapeLayer.init()
    layer_ca.strokeColor = UIColor.green.cgColor
    layer_ca.lineWidth  = 10.0
    layer_ca.fillColor = UIColor.clear.cgColor

    let bezier_path = UIBezierPath.init(roundedRect: CGRect.init(x: captureButton.frame.origin.x, y: captureButton.frame.origin.y, width: captureButton.frame.width, height: captureButton.frame.height), cornerRadius: 15)

        bezier_path.move(to: CGPoint(x: 12, y: 15))

    layer_ca.path = bezier_path.cgPath

    let animation = CABasicAnimation.init(keyPath: "strokeEnd")
    animation.fromValue = NSNumber.init(value: 0.0)
    animation.toValue = NSNumber.init(value: 1.0)
    animation.duration = 2.0

    layer_ca.add(animation, forKey: "myStroke")

    self.view.layer.addSublayer(layer_ca)

这里“captureButton”是我的一个对象所以它在cabasicanimation对象上方成功创建,现在我的问题是如何更改路径的终点以及如何将路径停止到距离路径的一半然后我继续使用相同的路径,每当我打电话开始时,我就会停止前一条路径。

我需要与对象周围的矩形进度条完全相同。

请帮助我应该知道答案的人。!

1 个答案:

答案 0 :(得分:0)

我只是有同样的问题,花几个小时来搞清楚。如果要控制起点或终点,则应创建自己的BezierPath,并自定义路径。 bezierPath.move(“起始位置”),就在那里,最后一点将是结束位置。