카메라에서 신속하게 사진을 캡처하기 위해 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에서 실행하고 이미지를 캡처하면 이것이 생성된 결과입니다. 또한 이 애플리케이션은 시뮬레이터에서 실행할 수 없습니다.
