2016-09-21 3 views
2

Ich bin verrückt nach diesem.UIIMagePickerController funktioniert nicht richtig mit Swift 3

Während der Migration einer einfachen UIIMagePicker-Implementierung habe ich alles richtig funktioniert, keine Probleme, keine Warnung. Der PickerController läuft sowohl auf dem Simulator als auch auf dem Gerät und berücksichtigt das neue Bild nicht und wird nicht auf das UImageView angewendet.

Dies ist mein Code:

@IBOutlet weak var profilePictureImageView: UIImageView! 
let picker = UIImagePickerController() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    picker.delegate = self 
    } 

//Opening Camera to take a new picture 
@IBAction func takeNewPictureButtonDidTouch(_ sender: AnyObject) { 
    if UIImagePickerController.isSourceTypeAvailable(.camera) { 
     picker.allowsEditing = false 
     picker.sourceType = UIImagePickerControllerSourceType.camera 
     picker.cameraCaptureMode = .photo 
     picker.modalPresentationStyle = .fullScreen 
     present(picker,animated: true,completion: nil) 
    } else { 
     noCamera() 
    } 
} 

//Opening the library to select an existing picture 
@IBAction func openPicturesLibraryButtonDidTouch(_ sender: AnyObject) { 
    picker.allowsEditing = false 
    picker.sourceType = .photoLibrary 
    picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)! 
    picker.modalPresentationStyle = .popover 
    present(picker, animated: true, completion: nil) 
    } 

//MARK: - Delegates 
func imagePickerController(_ picker: UIImagePickerController, 
          didFinishPickingMediaWithInfo info: [String : AnyObject]) 
{ 
    var chosenImage = UIImage() 
    chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage //2 
    profilePictureImageView.contentMode = .scaleAspectFill //3 
    profilePictureImageView.image = chosenImage //4 
    dismiss(animated:true, completion: nil) //5 
} 
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    dismiss(animated: true, completion: nil) 
} 

func noCamera(){ 
    let alertVC = UIAlertController(
     title: "No Camera", 
     message: "Sorry, this device has no camera", 
     preferredStyle: .alert) 
    let okAction = UIAlertAction(
     title: "OK", 
     style:.default, 
     handler: nil) 
    alertVC.addAction(okAction) 
    present(
     alertVC, 
     animated: true, 
     completion: nil) 
} 
} 
+0

zu sagen vergessen: das ist, was die consolle druckt aus: [Allgemeine] ein Bildformat mit einem unbekannten Typ erstellen ist ein Fehler – Alex

+0

Danke Nirav D aber das ist nicht der Fall. Meine Datei info.plist bettet bereits Privacy - Camera Usage Description und Privacy - Fotobibliothek Verwendung Beschreibung – Alex

+0

Erzwingen mich zu überprüfen, die Konsole, um hier die Lösung für weitere Untersuchungen zu drucken, gab tatsächlich die Lösung :-) https://forums. Diese developer.apple.com/thread/57026 war mein imagePickerController: func imagePickerController (_ Picker: UIImagePickerController, didFinishPickingMediaWithInfo Infos: [String: ANYOBJECT]) { Dies ist, wie es ändert ('Any' statt' AnyObject'): func imagePickerController (_ wähler: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Beliebige]) { hoffe das könnte jemand mit dem gleichen Problem helfen. – Alex

Antwort

0

Satz Delegaten selbst in viewDidLoad

Verwandte Themen