카메라에서 신속하게 사진을 캡처하기 위해 iOS SDK의 프레임워크인 AVFoundation을 사용할 수 있지만 카메라 애플리케이션에 많은 사용자 정의 기능이 필요할 때까지는 사용을 피해야 합니다. 이 예에서는 카메라에서 사진만 캡처하여 뷰에 표시합니다. 이 예에서는 AVFoundation 대신 이미지 선택기를 사용합니다.
먼저 프로젝트를 만들고 스토리보드의 뷰 컨트롤러에 이미지 뷰를 추가합니다. 해당 클래스에 콘센트를 만듭니다. 이제 ViewController 클래스 내부에서 -
를 준수합니다.class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate
그런 다음 objc 함수를 만듭니다.
@objc func openCamera(){ }
이제 보기가 로드되면 보기 컨트롤러에 탭 제스처 인식기를 추가합니다. 그러면 화면을 탭할 때 openCamera 함수를 호출해야 합니다.
override func viewDidLoad() { super.viewDidLoad() let gesture = UITapGestureRecognizer(target: self, action: #selector(openCamera)) self.view.addGestureRecognizer(gesture) }
이제 함수에서 다음 코드 줄을 추가합니다.
@objc func openCamera() { let imgPicker = UIImagePickerController() imgPicker.delegate = self imgPicker.sourceType = .camera imgPicker.allowsEditing = false imgPicker.showsCameraControls = true self.present(imgPicker, animated: true, completion: nil) }
위 단계를 완료했으면 이제 UIImagePickerControllerDelegate의 didFinishPickingMediaWithInfo 메소드를 구현하고 이 메소드 내부에서 사용자가 카메라에서 캡처한 이미지를 가져옵니다.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let img = info[UIImagePickerController.InfoKey.editedImage] as? UIImage { self.imgV.image = img self.dismiss(animated: true, completion: nil) } else { print("error") } } }
이제 info.plist에 카메라 사용 설명 키를 추가하고 애플리케이션이 카메라를 사용하려는 이유에 대한 설명을 제공해야 합니다. 이것을 iPhone에서 실행하고 이미지를 캡처하면 이것이 생성된 결과입니다. 또한 이 애플리케이션은 시뮬레이터에서 실행할 수 없습니다.