0

J'utilise ce ImagePicker pour sélectionner plusieurs images de la bibliothèque ou de l'appareil photo. Une fois que l'utilisateur a fini de sélectionner les images, je stocke ces images dans un tableau. Je veux afficher les images sur le cadre en fonction du nombre d'images sélectionnées. par exemple, si plus de 5 images ont été sélectionnées, le résultat sera quelque chose comme ceci parmi les images sélectionnées. enter image description hereImage-sélecteur afficher plusieurs images comme collage sans problème de mémoire

Imagepicker est nouveau pour moi. Je ne sais pas comment y parvenir. J'ai lu de nombreux articles, mais je n'ai pas compris comment mettre en œuvre dans mon cas.

Je teste sur Demo projet donné,

func doneButtonDidPress(_ imagePicker: ImagePickerController, images: [UIImage]) { 

    imagePicker.dismiss(animated: true, completion: nil) 
    imageArray = images 
    createCollage() 
} 

func createCollage() { 

} 

Si j'utilise UIImageView pour afficher/charger des images, il montre l'utilisation massive de mémoire.

Pouvez-vous s'il vous plaît quelqu'un m'aider ici avec l'un de ces problème? Toute aide sera très appréciée!!

+0

Il semble que vous ayez besoin d'apprendre à faire un UICollectionView personnalisé. [Custom UICollectionView] (https://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest) – MwcsMac

+0

Merci pour la réponse @MwcsMac. J'ai essayé avec la vue de collection aussi mais le problème de mémoire est toujours là si sélectionnant plus de 4/5 images. – iUser

+0

De plus, si l'utilisateur sélectionne seulement 1 image, il doit couvrir tout l'espace avec une seule image. Est-ce possible avec collectionView alors? – iUser

Répondre

0

regard sur le doc et le code de ImagePicker, ils recommandons d'utiliser

public var imageAssets: [UIImage] { 
    return AssetManager.resolveAssets(imagePicker.stack.assets) 
} 

en recherchant AssetManager.resolveAssets mise en œuvre nous allons se une taille de configuration

open static func resolveAsset(_ asset: PHAsset, size: CGSize = CGSize(width: 720, height: 1280), completion: @escaping (_ image: UIImage?) -> Void) { 

mis taille dépend de votre imageCréez la taille

--- UPD

ou utiliser la propriété

open var preferredImageSize: CGSize? 
+0

Hey, merci pour la réponse. J'ai essayé de changer la taille en 420 mais en prenant toujours trop de mémoire. – iUser

0

testé le même code sur l'appareil réel et il fonctionne très bien. Dans mon cas, les tests sur simulateur causaient un problème d'utilisation massive de mémoire ici.