У меня есть UIImageView, что я хочу открыть камеру, чтобы пользователь мог сделать снимок, обрезать его (жесткую часть), а затем сохранить приложение это в классе, который я уже написал. Я никогда не работал с камерой раньше, поэтому я не слишком уверен, как это сделать.Сделайте снимок с помощью камеры и используйте в качестве «профиля изображения» в приложении
ответ
Вы должны реализовать UIImagePickerController
- это также означает, что вам нужен ViewController
, чтобы они соответствовали к UIImagePickerControllerDelegate
и UINavigationControllerDelegate
. Сначала убедитесь, что ваш ViewController делает это:
class YourViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
Затем вы можете создать метод, который будет показывать камеру:
func showCamera() {
// Check if the device has a camera
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) {
// Device has a camera, now create the image picker controller
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.camera
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}
else {
NSLog("No Camera")
}
}
Тогда вы должны иметь этот метод как часть UIImagePickerControllerDelegate
, которая будет обрабатывать изображение принятые пользователем с их камерой:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// To dismiss the image picker
self.dismiss(animated: true, completion: nil)
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
// Do whatever you wish with the image
}
Вы также должны отметить, что Apple теперь установила новые протоколы конфиденциальности. Если вы хотите получить доступ к фотоаппарату пользователя или фототеке, вам нужно перейти на ваш Info.plist
и добавить NSPhotoLibraryUsageDescription
- в противном случае ваше приложение потерпит крах при попытке доступа к камере. Перейдите к вашему plist и вставьте новую строку, затем просто вставьте NSPhotoLibraryUsageDescription
, и они автоматически преобразуют ее, чтобы сказать что-то вроде «Privacy - Camera access». Затем вам нужно ввести описание в столбце значений о том, почему вам нужно получить доступ к камере. Это описание будет показано пользователю, когда сначала им предлагается разрешить вашему приложению доступ к камере.
Кроме того, если вы хотите, чтобы пользователь, чтобы обрезать изображение после того, как они берут картину, изменить это значение allowsEditing
при создании экземпляра UIImagePickerController
к true
Так что мне не нужно создавать собственный метод обрезки? он встроен? –
Я так считаю - вам придется попробовать это для себя, но я думаю, что можно использовать только тот, который уже создан. Зачем изобретать колесо? – Pierce
хорошо пункт. Благодарим вас за подробный ответ. –
Посмотрите в 'UIImagePickerController' – Pierce
на Я отправлю ответ, который покажет вам, как это сделать, но вы все равно должны прочитать документы об этом – Pierce