swift3.x
[swift3.0] カメラ起動、撮影、画面遷移で値の受け渡し
[環境]
Xcode:8.1
Swift:3.0.1
iOS:10.1
swiftでの
・カメラ起動
・撮影した画像の表示
・画像を写真アルバムに保存
は比較的情報が見つかりますが、撮影した写真を確認画面に画面遷移。となるとなかなか情報が無いですね。
苦労したので、参考にコードを記載します。
前提:
・カメラはUIImagePickerControllerSourceType.cameraで実装
※AVFoundationは使わない。。。
・撮影した画像を次の画面に表示
カメラでの撮影
1 2 3 4 5 6 7 8 9 10 |
let sourceType:UIImagePickerControllerSourceType = UIImagePickerControllerSourceType.camera if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) { // カメラを起動 let cameraPicker = UIImagePickerController() cameraPicker.sourceType = sourceType cameraPicker.delegate = self self.present(cameraPicker, animated: true, completion: nil) } else { print ("カメラ立ち上げのエラー") } |
カメラでの撮影
1 2 3 4 5 6 7 8 9 10 11 12 |
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { self.setImage = image picker.dismiss(animated: true, completion: nil) //写真confirm画面へ遷移 self.performSegue(withIdentifier: "photoConfirm", sender: self) } else { picker.dismiss(animated: true, completion: nil) } } |
撮影した画像を次の画面に引き渡す
1 2 3 4 5 6 7 |
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "PhotoConfirm" { let photoConfirm: PhotoConfirm = segue.destination as! PhotoConfirm PhotoConfirm.image = self.setImage! } } |
次の画面で撮影された画像を受け取る
ImageViewをストーリーボードからアウトレット接続
1 |
@IBOutlet weak var confirmPhotoView: UIImageView! |
受け取り用変数セット
1 |
var image: UIImage? = nil |
viewDidLoadで受け取って表示
1 2 3 4 |
override func viewDidLoad() { super.viewDidLoad() self.confirmPhotoView.image = self.image } |
ざっくりですが、こんな形で実装できました。
村本訓一
http://kunikazumuramoto.com株式会社lord代表。WEBデザイナー⇒ディレクター⇒プロデューサーです。2010年から起業しています。社会に出てからずっとWEB屋です。 新しいネットサービス、デバイス、コミック、本、映画好きです。最近は急にプログラマーっぽい事もやってます。