2017-02-02 10 views
-2

У меня есть UIImageView, что я хочу открыть камеру, чтобы пользователь мог сделать снимок, обрезать его (жесткую часть), а затем сохранить приложение это в классе, который я уже написал. Я никогда не работал с камерой раньше, поэтому я не слишком уверен, как это сделать.Сделайте снимок с помощью камеры и используйте в качестве «профиля изображения» в приложении

+0

Посмотрите в 'UIImagePickerController' – Pierce

+0

на Я отправлю ответ, который покажет вам, как это сделать, но вы все равно должны прочитать документы об этом – Pierce

ответ

1

Вы должны реализовать 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

+0

Так что мне не нужно создавать собственный метод обрезки? он встроен? –

+0

Я так считаю - вам придется попробовать это для себя, но я думаю, что можно использовать только тот, который уже создан. Зачем изобретать колесо? – Pierce

+0

хорошо пункт. Благодарим вас за подробный ответ. –