2017-08-03 1 views
2

Je veux mettre l'image à mon UIImageView en imagePickerController en utilisant Kingfisher mais rien ne se passe. D'abord, je dirige l'utilisateur vers la photothèque. Après que l'utilisateur sélectionne la photo et revienne, j'obtiens la photo comme UIImage et le URL dans imagePickerController. Kingfisher n'a pas de méthode pour définir UIImage. Donc, j'essaie de le définir à partir de l'URL, mais je vois juste un vide UIImageView. Mon code est;Set Image dans imagePickerController avec l'utilisation Kingfisher

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    let changedImage = info[UIImagePickerControllerOriginalImage] as! UIImage 
    let url = info[UIImagePickerControllerReferenceURL] as! URL 


    profilePhotoImage.kf.setImage(with: url) 

    picker.dismiss(animated: true, completion: nil) 

    } 

Mon URL est, "assets-library://asset/asset.JPG?id=D21C7124-472A-44F8-A22B-B3A5A0C48E32&ext=JPG" 0x00000001702f7680". Y at-il un problème avec mon URL ou puis-je définir UIImage avec martin-pêcheur. Je suis sûr que je peux obtenir la photo parce que quand j'essaye de mettre cela changedImage sans kf cela fonctionne. J'ai essayé le Kingfisher and swift 3 - cannot set image with url mais cela n'a pas fonctionné.

Répondre

2

Oui vous avez raison. C'est vraiment étrange. Essayez de définir votre image modifiée sur l'achèvement de la méthode de rejet du sélecteur. peut-être cela fonctionnera:

picker.dismiss(animated: true, completion: nil) 
self.imageView.image = self.changedImage 
} 
+0

C'est un travail. Thnx beaucoup. C'est la seule réponse dans tout Internet pour cette situation. Thnx mate – AtaerCaner

0

Je n'ai pas essayé de télécharger à partir d'une URL locale, mais je suis sûr qu'il existe un moyen de télécharger une image en utilisant Kingfisher.

Utilisez ImageDownloader pour télécharger une image sans mise en cache

ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) { 
(image, error, url, data) in 
    print("Downloaded Image: \(image)") 
} 

Vous pouvez consulter cette antisèche.

https://github.com/onevcat/Kingfisher/wiki/Cheat-Sheet

+0

Ouais il doit y avoir un moyen facile de mettre en image avec le martin-pêcheur. J'ai vérifié la feuille de triche mais je n'ai pas pu trouver. C'est tellement étrange. – AtaerCaner

+0

Dans quel contexte voulez-vous utiliser 'Kingfisher'? Est-ce pour la fonctionnalité de mise en cache? – Kiester

1

faire sur gestionnaire d'achèvement ainsi que le thread principal

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 


    dismiss(animated: true, completion: { 
      DispatchQueue.main.async { 
       self.imgProfile.kf.base.image = image 
      } 
    }) 

}