swiftでカメラアプリ

swiftでカメラアプリ開発

swift 2.0
xcode 7.3

iphoneの実機でカメラを動かしたい!

akira-watson.com

UIImagePickerControlを使ってカメラで写真を撮って保存する機能を実装

  1. Main.stroyboardを編集

f:id:aster55isk:20160420105407p:plain:w400

下記を設置

「カメラ起動」ボタン (UIButtom) 「保存」ボタン (UIButtom) ImageView (ImageView)

  1. ViewController.swiftに記述
import UIKit

class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
    
    // 撮影画像の表示View
    @IBOutlet var imageView : UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

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

    // カメラの撮影開始
    @IBAction func cameraStart(sender : AnyObject) {
        
        let sourceType:UIImagePickerControllerSourceType = UIImagePickerControllerSourceType.Camera
        // カメラが利用可能かチェック
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){
            // インスタンスの作成
            let cameraPicker = UIImagePickerController()
            cameraPicker.sourceType = sourceType
            cameraPicker.delegate = self
            self.presentViewController(cameraPicker, animated: true, completion: nil)
            
        }
        else{
            showAlert("", message: "Error of the camera function.")
        }
    }
    
    // 撮影が完了時した時に呼ばれる
    func imagePickerController(imagePicker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        
        if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
            self.imageView.image = pickedImage
        }
        
        //閉じる処理
        imagePicker.dismissViewControllerAnimated(true, completion: nil)
        
    }
    
    // 写真を保存
    @IBAction func savePic(sender : AnyObject) {
        let image:UIImage! = imageView.image
        
        if image != nil {
            UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)
        }
        else{
            showAlert("", message: "image Failed !")
        }
    }
    
    // 撮影がキャンセルされた時に呼ばれる
    func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        picker.dismissViewControllerAnimated(true, completion: nil)
    }
    
    // 書き込み完了結果の受け取り
    func image(image: UIImage, didFinishSavingWithError error: NSError!, contextInfo: UnsafeMutablePointer<Void>) {
        if error != nil {
            showAlert("", message: "Failed to save the picture.")
        } else {
            showAlert("", message: "The picture was saved.")
        }
    }
    
    // アラートを表示する
    func showAlert(title: String, message: String) {
        let alertView = UIAlertView()
        alertView.title = title
        alertView.message = message
        alertView.addButtonWithTitle("OK")
        alertView.show()
    }

}
  1. storyboardと紐付け

f:id:aster55isk:20160420111140p:plain:w400
実機でテスト

実機でテストするにはiphonemacに接続しターゲットでiphoneを選択する

f:id:aster55isk:20160420111305p:plain:w200

動作確認

f:id:aster55isk:20160420111634p:plain:w200

無事カメラ機能を実装完了

モザイクカメラアプリを作りました!