title: add and remove a subview using a button
body: <p>Hey guys so I've drawn a circle and added it as a subview using a button. When I try to remove it using the <code>removefromsuperview</code> it didn't go away.  Please check the code below.</p>
  
  <p>I added a button named <code>Removecircle</code> so I can add or remove the circle but that didn't go as planned. </p>
  
  <pre><code>import UIKit
     import GLKit
     class ViewController: UIViewController {
      var numb = 0
      override func viewDidLoad() {
      super.viewDidLoad()
  }
  override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
      // Dispose of any resources that can be recreated.
  }
  
     @IBAction func Removecircle(_ sender: Any) {
      let radius = Int( view.frame.maxX )
      let HvalueX = 0
      let HvalueY = Int( view.frame.maxY )/2 - Int( view.frame.maxX )/2
      // Create a new CircleView
      let circleView = CircleView( frame:CGRect(x: HvalueX, y: HvalueY, width: radius, height: radius ))
      //let test = CircleView(frame: CGRect(x: diceRoll, y: 0, width: circleWidth, height: circleHeight))
      if numb%2 == 0 {
          view.addSubview(circleView)
  
          // Animate the drawing of the circle over the course of 1 second
          circleView.animateCircle(duration: 4.0)
          circleView.circleLayer.strokeColor = UIColor.blue.cgColor
  
      }else if numb%2 == 1 {
  
          circleView.removeFromSuperview()
      }
      numb = numb + 1
  }
  @IBOutlet weak var removecircle: UIButton!
  
   }
  
  class CircleView: UIView {
   var circleLayer: CAShapeLayer!
  
  override init(frame: CGRect) {
      super.init(frame: frame)
      self.backgroundColor = UIColor.clear
  
      // Use UIBezierPath as an easy way to create the CGPath for the layer.
      // The path should be the entire circle.
      let circlePath = UIBezierPath(arcCenter: CGPoint(x: frame.size.width / 2.0, y: frame.size.height / 2.0), radius: (frame.size.width - 10)/2, startAngle: 0.0, endAngle: CGFloat(M_PI * 2.0), clockwise: true)
  
      // Setup the CAShapeLayer with the path, colors, and line width
      circleLayer = CAShapeLayer()
      circleLayer.path = circlePath.cgPath
      circleLayer.fillColor = UIColor.clear.cgColor
      circleLayer.strokeColor = UIColor.white.cgColor
      circleLayer.lineWidth = 3.0;
  
      // Don't draw the circle initially
      circleLayer.strokeEnd = 0.0
  
      // Add the circleLayer to the view's layer's sublayers
      layer.addSublayer(circleLayer)
      animateCircle(duration: 2)
  
  }
  
  required init?(coder aDecoder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
  }
  
  func animateCircle(duration: TimeInterval) {
      // We want to animate the strokeEnd property of the circleLayer
      let animation = CABasicAnimation(keyPath: "strokeEnd")
  
      // Set the animation duration appropriately
      animation.duration = duration
  
      // Animate from 0 (no circle) to 1 (full circle)
      animation.fromValue = 0
      animation.toValue = 1
  
      // Do a linear animation (i.e. the speed of the animation stays the same)
      animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
  
      // Set the circleLayer's strokeEnd property to 1.0 now so that it's the
      // right value when the animation ends.
      circleLayer.strokeEnd = 1.0
  
      // Do the actual animation
      circleLayer.add(animation, forKey: "animateCircle")
  }
  
  
  }
  </code></pre>