2016-04-29 1 views
0

Ok, donc je suis là depuis un moment et je n'arrive pas à le résoudre.Comment utiliser une fonction de clic de bouton pour convertir un PHAsset en UIImage

J'ai un ImagePicker qui regroupe des images dans PHAssest. Il s'agit de https://github.com/hyperoslo/ImagePicker

Lorsqu'une image est sélectionnée, le bouton Terminé est activé. J'ai un UIImageView qui, quand j'appuie sur le func doneButtonDidPress(images: [UIImage]), convertit le PHAsset en UIImage et le charge dans l'ImageView. Actuellement, ceci est mon code qui ne fonctionne pas:

// CONVERT PHASSET TO UIIMAGE 
func getAsset(asset: PHAsset) -> UIImage { 
let manager = PHImageManager.defaultManager() 
let option = PHImageRequestOptions() 
var image = UIImage() 
option.synchronous = true 
manager.requestImageForAsset(asset, targetSize: CGSize(width: 100.0, height: 100.0), contentMode: .AspectFit, options: option, resultHandler: {(result, info)->Void in 
    image = result! 
}) 
return image 
} 




func doneButtonDidPress(images: [UIImage]) { 



self.imagePickerController.dismissViewControllerAnimated(true, completion: nil) 
var selectedImg = imagePickerController.stack.assets 

getAsset(selectedImg) 
self.SelectedImageView.image = UIImage(named: selectedImg) 



} 

Qui indique des erreurs. Quelqu'un peut-il m'aider?! Thankyou

+0

je ne vois pas dans votre code où vous obtenez le UIImage de retour de la fonction 'getAsset()', et ce qui est 'chosenImg'? Je l'aurais fait: 'self.SelectImageView.image = getAsset (selectedImg)' – Chajmz

+0

le 'func getAsset (asset: PHAsset) -> UIImage' a été retourné juste avant que ses derniers accolades soient' return image'. PS: Ignorer le choisiImg. Je l'ai mis à jour. Si, par hasard, vous pouvez réécrire la fonction tout en un seul bouton au lieu de l'appeler dans le bouton, ce serait génial. Cependant, toute aide serait vraiment appréciée. Merci –

Répondre

1

Je reçois UIImage de PHAsset comme:

func getAsset(asset: PHAsset) -> UIImage { 
var image = UIImage() 
let imgManager = PHImageManager.defaultManager() 
      let requestOptions = PHImageRequestOptions() 
      requestOptions.synchronous = true 
      imgManager.requestImageForAsset(asset, targetSize: CGSizeMake(300.0, 300.0), contentMode: PHImageContentMode.AspectFit, options: requestOptions, resultHandler: { (img, _) in 
       image = img 
      }) 
return image 
} 

Ce code est testé & travaille actuellement dans ma demande.

méthode bouton TERMINE devrait être comme:

func doneButtonDidPress(image: [UIImage]) { 
self.imagePickerController.dismissViewControllerAnimated(true, completion: nil) 
var selectedImg = imagePickerController.stack.assets.first 
self.selectedImageView.image = getAsset(selectedImg) 
} 
+0

le 'self.selectedImageView.image = getAsset (selectedImg)' est en train de marquer avec une valeur d'erreur de type UIViewController n'a pas de membre selectedImageView –

+0

auquel 'UIImageView' vous voulez ajouter une image? Pouvez-vous partager le code du contrôleur complet pour vérifier si vous avez une sortie pour 'selectedImageView'? Assurez-vous également de l'orthographe peut-être que j'ai mal orthographié. –

+0

excellent, fonctionne parfaitement maintenant. Merci @ Muhammad. Je devais juste changer le nom de UIImageView. –