无法获得CAShapeLayer的正确中心

时间:2017-06-13 19:53:55

标签: ios swift3 cashapelayer

有人可以指出我做错了什么吗?我需要适应所有iphone屏幕的肖像。这是一个好方法吗?

var progressCircle = CAShapeLayer()

    let centerPoint = CGPoint (x: vu_SubmissionViewWithImageInCenter.bounds.width / 2, y: imgVu_Submission.bounds.width / 2)
    let circleRadius : CGFloat = vu_SubmissionViewWithImageInCenter.bounds.width / 2 * 0.94

    let circlePath = UIBezierPath(arcCenter: centerPoint, radius: circleRadius, startAngle: CGFloat(-0.5 * M_PI), endAngle: CGFloat(1.5 * M_PI), clockwise: true    )

    progressCircle = CAShapeLayer ()
    progressCircle.path = circlePath.cgPath
    progressCircle.strokeColor = UIColor.fuschia.cgColor
    progressCircle.fillColor = UIColor.clear.cgColor
    progressCircle.lineWidth = 3.5
    progressCircle.strokeStart = 0
    progressCircle.strokeEnd = 1.0
    vu_SubmissionViewWithImageInCenter.layer.addSublayer(progressCircle)


    let animation = CABasicAnimation(keyPath: "strokeEnd")
    animation.fromValue = 0
    animation.toValue = 1.0
    animation.duration = 5.0
    animation.fillMode = kCAFillModeForwards
    animation.isRemovedOnCompletion = false
    progressCircle.add(animation, forKey: "ani")
    animation.delegate = self

IB to show constraints how can i adapt the drawing to these constraints to make it draw perfectly on all portraits? 5s 7

1 个答案:

答案 0 :(得分:-1)

您的半径计算错误。从弧中心到imageview边缘进行距离计算,并将其用作半径。