[swift] 카메라를 응용 프로그램에 편입

11832 단어 Swift

하고 싶은 일


응용 프로그램 내의 이미지 투고 기능을 제작할 때 즉석에서 카메라 촬영을 통해 투고 이미지를 준비하고 싶다.
아래의 보도를 참고하여 진행하다.
[아이폰 어플리케이션 최초 개발] 카메라 사용.
[아이폰] UIimagePicker Controller의 카메라 촬영

환경


xcode 11.3
swift 5.1.3
CocoaPods 1.8.4

실시


info.plist의 추기


info.plist
<key>NSPhotoLibraryUsageDescription</key>
<string>写真投稿機能のためのフォトライブラリアクセス</string>
<key>NSCameraUsageDescription</key>
<string>写真投稿機能のためのカメラアクセス</string>
아래와 같이 표시됩니다.

storyboard 설치

  • 이미지 선택 버튼을 설정합니다
  • 선택한 이미지의 imageView를 표시합니다

  • 코드 작성


    ViewController.swift
    import UIKit
    
    class ViewController: UIViewController {
        var postImage:UIImage?
        @IBOutlet weak var imageView: UIImageView!
    
        // imageを選ぶボタン
        // ライブラリー選択ボタン
        @IBOutlet weak var libraryBtn: UIButton!
        @IBAction func toLibrary(_ sender: Any) {
            addImagePickerView()
        }
        // カメラ撮影ボタン
        @IBOutlet weak var cameraBtn: UIButton!
        @IBAction func toCamera(_ sender: Any) {
            addCameraView()
        }
    
        override func viewDidLoad() {
            super.viewDidLoad()        
        }
    }
    
    // imagePickerViewの設定用
    extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate{
    
        // カメラの利用
        func addCameraView() {
    
            // シミュレーターでやるとカメラが使えないから、クラッシュしないようにアラート表示させる方へ分岐
            if !UIImagePickerController.isSourceTypeAvailable(.camera){
    
                let alertController = UIAlertController.init(title: nil, message: "Device has no camera.", preferredStyle: .alert)
    
                let okAction = UIAlertAction.init(title: "Alright", style: .default, handler: {(alert: UIAlertAction!) in
                })
    
                alertController.addAction(okAction)
                self.present(alertController, animated: true, completion: nil)
    
            }
            else{
                //imagePickerViewを表示する
                let pickerController = UIImagePickerController()
                pickerController.sourceType = .camera
                pickerController.delegate = self
                self.present(pickerController, animated: true, completion: nil)
            }
        }
    
        // ライブラリーの利用
        func addImagePickerView() {
            //imagePickerViewを表示する
            let pickerController = UIImagePickerController()
            pickerController.sourceType = .photoLibrary
            pickerController.delegate = self
            self.present(pickerController, animated: true, completion: nil)
        }
    
        // 以下の二つは、sourceTypeがcameraでもphotoLibraryでも共通
        // pickerの選択がキャンセルされた時の処理
        func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
             dismiss(animated: true, completion: nil)
        }
        // 画像が選択(撮影)された時の処理
        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
            print("The image was selected")
            print(info[UIImagePickerController.InfoKey.originalImage] as! UIImage)
    
            guard let selectedImage = info[UIImagePickerController.InfoKey.originalImage] as! UIImage? else {return}
    
            // imageを格納
            imageView.image = selectedImage
    
            self.dismiss(animated: true, completion: nil)
        }
    }
    

    마지막


    나는 애플의 공식 홈페이지를 잘 보고 더 많이 공부하고 싶다.
    apple developer : UIImagePickerController

    좋은 웹페이지 즐겨찾기