iOS UI ImagePicker Controlを使用して写真をインポート


このプレゼンテーションでは、ライブラリから写真を取得したり、カメラを使用して直接写真をアップロードしたりする方法について説明します.

会員入選画面が表示されます.表示されたアイコンにラベルを付けて、フォトライブラリを実行できます.
let gesture = UITapGestureRecognizer(target: self,
									 action: #selector(didChangeProfilePic))
                                     
imageView.addGestureRecognizer(gesture)

@objc private func didChangeProfilePic() {
	presentPhotoActionSheet()
}
ImageViewにTapGestureReceinterを登録し、target-action方式でpresentPhotoActionSheet()を登録します.
まず、アクションテーブルをボタンアクションとして追加し、presentCamera()ライブラリで写真を撮るかpresentPhotoPicker()ライブラリで写真を撮るかを選択します.
ActionSheetについて詳しくない場合は、https://medium.com/swift-india/uialertcontroller-in-swift-22f3c5b1dd68を参照してください.
func presentPhotoActionSheet() {
    let actionSheet = UIAlertController(title: "Profile Picture", message: "How would you like to select a picture?", preferredStyle: .actionSheet)
    actionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
    actionSheet.addAction(UIAlertAction(title: "Take Photo", style: .default, handler: { [weak self] _ in
        self?.presentCamera()
    }))
    actionSheet.addAction(UIAlertAction(title: "Choose Photo", style: .default, handler: { [weak self] _ in
        self?.presentPhotoPicker()
    }))

    present(actionSheet, animated: true)
}

写真を撮ります!

func presentCamera() {
    let vc = UIImagePickerController()
    vc.sourceType = .camera
    vc.delegate = self
    vc.allowsEditing = true
    present(vc, animated: true)
}

ライブラリから写真を呼びます!

func presentCamera() {
    let vc = UIImagePickerController()
    vc.sourceType = .photoLibrary
    vc.delegate = self
    vc.allowsEditing = true
    present(vc, animated: true)
}
2つの方法から見ると、大きな違いはなく、UIImagePickerController.sourceType.cameraの違いにすぎない.

写真をViewControllerに持って行きます!


撮影またはロードした写真をアプリケーションにインポートする場合は、依頼を行えばよい.
// when user takes a photo
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        picker.dismiss(animated: true, completion: nil)
        
    guard let selectedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage else {
        return
    }
    self.imageView.image = selectedImage
}
    
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    picker.dismiss(animated: true, completion: nil)
}
Picker Controlを画面から離します..photoLibrary
そしてユーザが選択した画像を求める.picker.dismiss(animated:, completion:)