В моем приложении есть viewController, который открывается с вызываемой камерой.Когда пользователь берет фотографию и нажимает «использовать фотографию», изображение должно отображаться в том же viewController's imageView.
Я знаю, что это может показаться дубликатом (!) - но я читал здесь много вопросов об отображении изображений из imagePicker, и пока ни одно из их решений не помогло мне.
В принципе я не получаю ошибок ни в консоли, ни в коде.- Но когда я запускаю приложение на своем устройстве, оно останавливается после нажатия кнопки «Использовать фотографию», а затем мне приходится закрывать приложение.
Моя единственная идея сейчас заключается в том, что есть некоторые общие настройки использования конфиденциальности иличто-то вроде этого, которое мне нужно установить, чтобы показать фотографии пользователя, но в этом случае я не знаю, что и как!
Пожалуйста, помогите!
Код:
class CreateNewPerson: UIViewController, UITextFieldDelegate,
UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var personPhoto: UIImageView!
let imagePicker = UIImagePickerController()
override func viewDidAppear (_ animated: Bool) {
checkCameraPermissions()
super.viewDidAppear(true)
}
private func checkCameraPermissions() {
let status = AVCaptureDevice.authorizationStatus(for: .video)
switch status {
case .authorized: self.presentPicker()
case .notDetermined: self.requestAccess()
case .denied: print("Permission denied.")
case .restricted: print("Permission restricted.")
}
}
private func requestAccess() {
AVCaptureDevice.requestAccess(for: AVMediaType.video) { granted in
if !granted {
print("Error.")
} else {
self.checkCameraPermissions()
}
}
}
private func presentPicker() {
imagePicker.delegate = self
imagePicker.sourceType = .camera
present(imagePicker, animated: true, completion: nil)
}
private func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : UIImage]) {
let chosenImage = info[UIImagePickerControllerOriginalImage]
imagePicker.delegate = self
personPhoto.contentMode = .scaleAspectFit
personPhoto.image = chosenImage
dismiss(animated: true, completion: nil)
}
}
Так что да - в принципе, это только последний метод, который действительно является проблемой!Камера показывает и все, но я не могу показать фото .. Что не так с моим подходом?
Спасибо!