I have a CAShapeLayer that is a circle centered in the middle of the main View of my View Controller.
It looks like this:
The Problem I have is, that if I try to animate a rotation with the following code, it does not rotate around the center of the circle but somewhere else.
import UIKit
extension UIView {
func addCircle(centerOfCircle: CGPoint, radius: CGFloat, startAngle: CGFloat?, endAngle: CGFloat?) {
let circlePath = UIBezierPath(arcCenter: centerOfCircle, radius: radius, startAngle: startAngle ?? 0, endAngle: endAngle ?? CGFloat(Double.pi * 2), clockwise: true)
let shapeLayer = CAShapeLayer()
shapeLayer.path = circlePath.cgPath
//change the fill color
shapeLayer.fillColor = UIColor.clear.cgColor
//you can change the stroke color
shapeLayer.strokeColor = UIColor.red.cgColor
shapeLayer.lineDashPattern = [1, 10]
shapeLayer.lineCap = .round
//you can change the line width
shapeLayer.lineWidth = 3.0
shapeLayer.anchorPoint = centerOfCircle
let rotation : CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotation.toValue = NSNumber(value: Double.pi * 2)
rotation.duration = 2
rotation.isCumulative = true
rotation.repeatCount = Float.greatestFiniteMagnitude
shapeLayer.add(rotation, forKey: "rotationAnimation")
self.layer.addSublayer(shapeLayer)
}
}
What I get then is the following:
Any help would be highly appreciated!