728x90
카메라와 포토 라이브러리 앱을 사용합니다.
초기 환경 세팅
카메라와 포토 라이브러리를 사용하기 위해서는 ImagePickerController의 델리게이트 프로토콜과 MobileCoreServices 헤더 파일이 필요합니다.
그리고 UIImagePickerController 인스턴스를 생성합니다.
import UIKit
import MobileCoreServices
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
let imagePicker: UIImagePickerController! = UIImagePickerController()
...
사진 촬영하기
camera가 이용 가능한 경우에 delegate와 설정값을 정의해서 카메라 뷰를 띄웁니다.
photoLibrary, video에는 각 경우에 맞게 설정값을 맞추면 됩니다.
@IBAction func btnCaptureImageFromCamera(_ sender: UIButton) {
if (UIImagePickerController.isSourceTypeAvailable(.camera)) {
flagImageSave = true
imagePicker.delegate = self
imagePicker.sourceType = .camera
imagePicker.mediaTypes = [UTType.image.identifier]
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
} else {
myAlert("Camera inaccessable", message: "Application cannot access the camera.")
}
}
동작 후 액션
// 선택인 끝난 경우
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) { let mediaType = info[UIImagePickerController.InfoKey.mediaType] as! NSString
if mediaType.isEqual(to: UTType.image.identifier) {
captureImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
if flagImageSave {
UIImageWriteToSavedPhotosAlbum(captureImage, self, nil, nil)
}
imgView.image = captureImage
} else if mediaType.isEqual(to: UTType.movie.identifier) {
if flagImageSave {
videoURL = (info[UIImagePickerController.InfoKey.mediaURL] as! URL)
UISaveVideoAtPathToSavedPhotosAlbum(videoURL.relativePath, self, nil, nil)
}
}
self.dismiss(animated: true, completion: nil)
}
// 취소한 경우
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
self.dismiss(animated: true, completion: nil)
}
'iOS > 스위프트로 아이폰 앱 만들기' 카테고리의 다른 글
[17장] Tab & Touch (0) | 2021.10.20 |
---|---|
[16장] Core graphics (0) | 2021.10.19 |
[14장] Video (0) | 2021.10.19 |
[13장] Audio (0) | 2021.10.17 |
[12장] Table View (0) | 2021.10.17 |