title: Animate CAShapeLayer with circle UIBezierPath and CABasicAnimation
body: <p>I'd like to animate a circle from angle 0 to 360 degrees in 15 sec. </p>
  
  <p>The animation is weird. I know this is probably a start/end angle issue, I already faced that kind of problem with circle animations, but I don't know how to solve this one. </p>
  
  <pre><code>var circle_layer=CAShapeLayer()
  var circle_anim=CABasicAnimation(keyPath: "path")
  
  func init_circle_layer(){
      let w=circle_view.bounds.width
      let center=CGPoint(x: w/2, y: w/2)
  
      //initial path
      let start_angle:CGFloat = -0.25*360*CGFloat.pi/180
      let initial_path=UIBezierPath(arcCenter: center, radius: w/2, startAngle: start_angle, endAngle: start_angle, clockwise: true)
      initial_path.addLine(to: center)
  
      //final path
      let end_angle:CGFloat=start_angle+360*CGFloat(CGFloat.pi/180)
      let final_path=UIBezierPath(arcCenter: center, radius: w/2, startAngle: start_angle, endAngle: end_angle, clockwise: true)
      final_path.addLine(to: center)
  
      //init layer
      circle_layer.path=initial_path.cgPath
      circle_layer.fillColor=UIColor(hex_code: "EA535D").cgColor
      circle_view.layer.addSublayer(circle_layer)
  
      //init anim
      circle_anim.duration=15
      circle_anim.fromValue=initial_path.cgPath
      circle_anim.toValue=final_path.cgPath
      circle_anim.isRemovedOnCompletion=false
      circle_anim.fillMode=kCAFillModeForwards
      circle_anim.delegate=self
  }
  
  func start_circle_animation(){
      circle_layer.add(circle_anim, forKey: "circle_anim")
  }
  </code></pre>
  
  <p>I want to start on top at 0 degrees and finish on top after a full tour:
  <a href="https://i.stack.imgur.com/tIZYV.png" rel="noreferrer"><img src="https://i.stack.imgur.com/tIZYV.png" alt="enter image description here"></a> </p>
  
  <p><a href="https://i.stack.imgur.com/HvBPU.png" rel="noreferrer"><img src="https://i.stack.imgur.com/HvBPU.png" alt="enter image description here"></a></p>