アプリで遊んでいる姿をインカメを利用してカメラやビデオで撮影する事が出来ないか試しています。

カメラをUIImagePickerで設定すると、カメラ起動で必ずカメラビューが現れます。

そこで、別のビュー(OverlayView)を保ったまま、インカメだけを利用して別のビュー(OverlayView)の画面をタップして写真が撮れる方法を探しています。

カメラ起動でOverlayViewを上に乗せる事は出来たのですが、シャッターの切り方が分かりません。

ようは、カメラのインターフェイスを出さずに、カメラを撮る方法がないか試行錯誤していて、
カメラを起動した時にその上に別のViewを作り、そこでゲーム的なアニメーションを作る方法でどうかと思いました。
根本的に考え方が間違っているのかも?

どなたかご教授願えないでしょうか? よろしくお願い致します。

試しているコードは下記の通りです。

ViewController.swift

import UIKit

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIGestureRecognizerDelegate {

    @IBOutlet weak var photoLibraryButton: UIButton!

    @IBOutlet weak var cameraButton: UIButton!

    @IBOutlet weak var photoImageView: UIImageView!

//   let overlayview = OverlayView()

    override func viewDidLoad() {
        super.viewDidLoad()


//        overlayview .removeFromSuperview()


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func photoLibraryAction(sender: UIButton) {

        let picker = UIImagePickerController()

        picker.delegate = self

        picker.sourceType = .PhotoLibrary

        picker.allowsEditing = true

        presentViewController(picker, animated: true, completion: nil)

    }

    // カメラを起動
    @IBAction func cameraAction(sender: UIButton) {

        let picker = UIImagePickerController()

        picker.delegate = self


        if UIImagePickerController.isSourceTypeAvailable(.Camera)
        {

            picker.sourceType = .Camera

            let overlayView = OverlayView(frame: picker.view.frame)

            picker.cameraOverlayView = overlayView

//            // 撮影ボタン等を隠す。
//            picker.showsCameraControls = false

            // インカメで撮る。
            picker.cameraDevice = .Front

        }else{
            picker.sourceType = .PhotoLibrary
        }

        presentViewController(picker, animated: true, completion: nil)


    }

    // 撮影が完了した時に呼ばれる。
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

        if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
        {
            photoImageView.contentMode = .ScaleAspectFit
            photoImageView.image = pickedImage
            saveImage()
        }

        // 閉じる処理
            dismissViewControllerAnimated(true, completion: nil)
    }


    // 写真を保存
    func saveImage()
    {
        let image: UIImage! = photoImageView.image

        if image != nil {
            UIImageWriteToSavedPhotosAlbum(image, self, #selector(ViewController.image(_:didFinishSavingWithError:contextInfo:)), nil)
        }else{
            print("error, image failed !")
        }

    }

    // 書き込み完了結果の受け取り
    func image(image:UIImage, didFinishSavingWithError error: NSError!, contextInfo: UnsafeMutablePointer<Void>)
    {
        if error != nil {
            print(error.code)
            print("Save Failed !")
        }
        else{
            print("Save Succeeded")
        }
    }


    // 撮影をcancel
    func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

}

OverlayView.swift

import UIKit

class OverlayView: UIView {

    var view : UIView!


    @IBOutlet weak var ratImage: UIImageView!


    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setup()
    }

    // xibからカスタムViewを読み込んで準備する
    func setup()
    {
        // MyCustomView.xib からカスタムViewをロードする
        let bundle = NSBundle(forClass: self.dynamicType)
        let nib = UINib(nibName: "OverlayView", bundle: bundle)
        let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

        addSubview(view)

        // カスタムViewのサイズを自分自身と同じサイズにする
        view.translatesAutoresizingMaskIntoConstraints = false
        let bindings = ["view": view]
        addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[view]|", options: NSLayoutFormatOptions(rawValue:0), metrics: nil, views: bindings))
        addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[view]|", options: NSLayoutFormatOptions(rawValue:0), metrics: nil, views: bindings))

    }



    @IBAction func testButtonTapped(sender: UIButton) {

        print("button tapped")
    // ここでシャッターが切れるようにして写真やビデオを撮影する
    }

    /*
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func drawRect(rect: CGRect) {
        // Drawing code
    }
    */

}