title: Trouble with solution for programmatically cropping a picture to a square
body: <p>I'm trying to write code to make it so that the camera takes square pictures only from my app on an iPad.  I found a solution on here which I translated from Objective-C to Swift, but after I take a picture with the code, the "Use Photo" and "Retake" buttons won't respond to touch unless I rotate the iPad 90 degrees and hit the button from landscape mode.  This is of course quite undesirable.  Any hints on how to fix my code would be fantastic.</p>
  
  <pre><code>@IBAction func takePicture(sender: UIButton)
  {
      let alertController = UIAlertController(title: nil, message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)
      let takePictureAction = UIAlertAction(title: "Take Picture", style: UIAlertActionStyle.Default)
      { (alertAction: UIAlertAction!) -&gt; Void in
          let picker = UIImagePickerController()
          picker.delegate = self
          picker.sourceType = .Camera
          var f: CGRect
          f = picker.view.bounds
          //f.size.width -= picker.navigationBar.bounds.size.width
          f.size.height -= picker.navigationBar.bounds.size.height
          var barHeight: CGFloat
          barHeight = (f.size.height - f.size.width) / 2
          UIGraphicsBeginImageContext(f.size)
          var edgeColor: UIColor
          edgeColor = UIColor(white: 0, alpha: 0.5)
          edgeColor.set()
          UIRectFillUsingBlendMode(CGRectMake(0, 0, f.size.width, barHeight), CGBlendMode.Normal)
          UIRectFillUsingBlendMode(CGRectMake(0, f.size.height - barHeight, f.size.width, barHeight), CGBlendMode.Normal)
          var overlayImage: UIImage
          overlayImage = UIGraphicsGetImageFromCurrentImageContext()
          UIGraphicsEndImageContext()
  
          let overlayIV = UIImageView(frame: f)
          overlayIV.image = overlayImage
          picker.cameraOverlayView?.addSubview(overlayIV)
          self.presentViewController(picker, animated: true, completion: nil)
      }
  
      let chooseExistingPicture = UIAlertAction(title: "Use Existing", style: UIAlertActionStyle.Default) {(alertAction: UIAlertAction!) -&gt; Void in
  
          let picker = UIImagePickerController()
          picker.delegate = self
          picker.sourceType = .PhotoLibrary
          self.presentViewController(picker, animated: true, completion: nil)
      }
      alertController.addAction(takePictureAction)
      alertController.addAction(chooseExistingPicture)
      alertController.view.tintColor = UIColor.blackColor()
      presentViewController(alertController, animated: true, completion: nil)
      let presentationController = alertController.popoverPresentationController
      presentationController?.sourceView = self.view
      presentationController?.sourceRect = CGRectMake(330, 210, 330, 210)
  }
  func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
  {
  
      var image = info[UIImagePickerControllerOriginalImage]
  
      let imageSize = image?.size
      let width = Double((imageSize?.width)!)
      let height = Double((imageSize?.height)!)
      if width != height {
          let newDimension = min(width, height)
          let widthOffset = (width - newDimension) / 2
          let heightOffset = (height - newDimension) / 2
          UIGraphicsBeginImageContextWithOptions(CGSizeMake(CGFloat(newDimension), CGFloat(newDimension)), false, 0.0)
          image?.drawAtPoint(CGPointMake(CGFloat(-widthOffset), CGFloat(-heightOffset)))
          image = UIGraphicsGetImageFromCurrentImageContext()
          UIGraphicsEndImageContext()
      }
      CustomPicture.image = image as? UIImage;
      dismissViewControllerAnimated(true, completion: nil)
  }
  </code></pre>