StrokeEnd没有绘制完整的圆圈

时间:2016-06-17 16:22:12

标签: ios swift animation progress

我正在尝试为音乐播放器构建进度视图。我总体上对编程很新,现在真的走到了死胡同。

我的进展很好。我是animatig" strokeEnd"使用Mediafile的值(值/持续时间),但strokeEnd只能达到圆圈的值。然而,这首歌也完成了,这就是为什么我认为,在某个地方计算错误。

这是我正在使用的一个非常简单的Shaplayer。

var value: CGFloat  = 0.0{
didSet {
  redrawStrokeEnd() }
}

private func setupShapeLayer(shapeLayer: CAShapeLayer) {
let startAngle = CGFloat(M_PI_2)
let endAngle = CGFloat(M_PI_2 * 2 + M_PI_2)
progressLayer.path = UIBezierPath(arcCenter:centerPoint, radius:   CGRectGetWidth(frame)/2 + 5, startAngle:startAngle, endAngle: endAngle, clockwise: true).CGPath
progressLayer.strokeStart = 0.0
progressLayer.strokeEnd = 0.0 }

func redrawStrokeEnd() {
progressLayer.strokeEnd = CGFloat(value / CGFloat(duration))}

value = currentTime和duration = Playbackduration。 我无法弄清楚,为什么笔画不会移动整个圆圈。

3 个答案:

答案 0 :(得分:0)

它不是中风你看到半圈的原因。您的路径只有错误的起点和终点角度。您可以将它们设置为如下所示以获得完整的圆圈:

let startAngle = CGFloat(M_PI_2)
let endAngle = CGFloat(5*M_PI_2)

或者更好的是,如果你不想用弧度设置角度,请将它们设置为这样的度数:

let startAngle = CGFloat(0 * M_PI / 180)
let endAngle = CGFloat(360 * M_PI / 180.0)

答案 1 :(得分:0)

只需更改代码中的起始角度和结束角度即可。

let startAngle = -90.0
let endAngle = -90.01

答案 2 :(得分:0)

也许你正在使用错误的常数?正如其他一些评论者指出的那样,弧度中的圆圈横穿2 * pi。然而,常数M_PI_2等于(pi / 2)所以现在你只能从(pi / 2) - >>遍历。 (3pi / 2)...或pi。如果你真的想从pi / 2开始尝试:

let startAngle = CGFloat(M_PI_2)
let endAngle = CGFloat(M_PI_2 + 2.0 * M_PI)
相关问题