[iOS] UIImagePickerController, 카메라 접근 허용
UIImagePickerController: UIPickerView에서 다 처리를 했지만, 보안문제로 나누어지게 되었다.
UIImagePickerController & PHPickerViewController
이걸 이용하려면, 권한 설정 알림창을 구현해주어야한다.
아래와 같이 Application Scene Manifest 아래에 Privacy - Camera Usage Description 옵션을 추가해준다.
왜 접근하려하는지 이유를 자세히 써주지 않으면 reject 당한다.
다음으로 코드를 작성한다.
UIImagePickerController()의 객체인 camera의 sourceType은 .camera만 가능하고, 나머지 기능들은 deprecated된 것을 알 수 있다.
이렇게 구현하면 에러가 나기 때문에, 아래에 extension을 구현해준다.
다시 돌아가서 configurtaion을 설정해주겠다.
또 에러가 나기 때문에 이것의 extension도 작성해준다.
아래와 같이 작성해주는데,
ofClass: 뒤에는 클래스 타입이 와야하므로, 일단 클래스인 UIImage를 써주고. 클래스 타입 뒤에는 .self를 붙여준다.
그리고 나서 이렇게 나오는데,
파란색 블럭에서 엔터를 한번 쳐주어서 후행 클로저로 해준다.
이 과정을 더 잘 알려면, [PHPickerResult]를 공부해보면 된다.
.loadObject(ofClass: UIImage.self) 에 대해서도 더 공부
UIImage를 가지고오는 것은 메인 큐에서 실행해야하므로, 메인 큐로 보내는 작업을 해준다.
그리고 마지막으로 취소 작업을 해준다.
그다음, 이미지뷰와 버튼 객체를 IBOutlet, IBAction으로 각각 연결해준다.
버튼을 선택했을 때, alert창이 뜨면서 나타나도록 하는 방식 구현을 해주었다.
아, 그리고 picker.dismiss(animated:true) 위치를 위에 넣어주어야 취소 버튼 동작이 잘한다.
그다음 바 버튼 추가를 해준다.
actSave
이미지 데이터를 도큐먼트 폴더에 저장해줘야하는데, 저장해주는 기능이 없기때문에 data 변수를 jpegData 메서드로 받는다.