Chargement des images
Bonjour à tous,
Je travail actuellement sur un remake de "Photos" pour iPhone.
Je suis confronté à un gros problème -> le chargement des photos. Pour l'instant je bosse en fullscreen donc ce que je fais c'est que je charge au maximum 3 images : la précedente, l'acutelle, et la suivante.
Ouaip.. mais c'est super lent quand meme. Plutôt acceptable dans le simulateur, mais sur un vrai iPhone c'est la catastrophe.
Est-ce qu'il y a une solution plus simple ? Déjà que je suis étonné qu'Apple ne propose pas un mode slideshow du meme genre que Photos, et encore plus pour le mode quadrillage des photos...
Merci,
Louka.
Je travail actuellement sur un remake de "Photos" pour iPhone.
Je suis confronté à un gros problème -> le chargement des photos. Pour l'instant je bosse en fullscreen donc ce que je fais c'est que je charge au maximum 3 images : la précedente, l'acutelle, et la suivante.
Ouaip.. mais c'est super lent quand meme. Plutôt acceptable dans le simulateur, mais sur un vrai iPhone c'est la catastrophe.
Est-ce qu'il y a une solution plus simple ? Déjà que je suis étonné qu'Apple ne propose pas un mode slideshow du meme genre que Photos, et encore plus pour le mode quadrillage des photos...
Merci,
Louka.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Sinon j'ai baissé la résolution (c'était des fond d'écran au départ pour tester) et j'ai enregistré en PNG car une rumeur circule comme quoi ça charge plus vite en PNG.. mouaip on dirait aussi après un test sur mon iPhone.
Pour l'instant je charge les images dès le lancement de l'application. Le seule problème c'est que j'ai peur pour la RAM après.
Tous les examples de slideshow que j'ai pu trouver utilisait la méthode de tout charger direct.
Au départ j'avais fait un fullscreen qui ne charge que les images qui se trouvent à côté de celle qu'on visionne, le problème c'était que dès qu'on change d'image, fallait en charger une nouvelle, et ça faisait un petit lag très court sur le simulateur (à peine visible), mais assez visible sur l'iPhone.
Il y a un moyen simple de suivre la consommation de RAM avec le simulateur iPhone ? ou meme avec un test sur iPhone direct ?
L'idée est de garder en mémoire les images déjà chargées plutôt que de les supprimer, et d'utiliser la notification que l'iPhone t'envoie quand il a besoin de libérer la mémoire (didReceiveMemoryWarning) pour faire le ménage des images trop loin de l'image actuellement visionnée quand il y a besoin de libérer de la RAM.
Ouaip j'ai pensé au thread mais j'ai pas encore l'habitude de dev sur iPhone, pour moi dans ma tête ça reste super limité en fait.
Bon je vais faire comme ça, ça sera mieux.
Mais je suis quand meme dégouté qu'Apple ne propose pas au moins un mode quadrillage pour les photos... bouuuhhh (iPhone OS 3 ptete )
J'ai un singleton "SharedPhotos" qui se charge d'initialiser les photos. C'est lui qui contient la array "mPhotos" qui sont les 3 photos maxi actuelles, ainsi que "mData" qui est une array qui contient simplement les noms des images à charger.
Voilà comment je procède. Lorsque je charge ma vue qui fait le fullscreen pour la navigation, je récupère les index les plus proche (au début c'est index 0 et 1 de mData vu que -1 est impossible). puis j'envoie une array qui contient donc les 2 premières photos à charger :
(bon j'ai un peu déliré sur la variable booléenne "isBossing" )
Après j'envoie la notification à ma vue et elle commence à initialiser les UIImageView avec les images chargées. Mon controlleur peut récupérer la array mPhoto quand il veut.
Pour initialiser les UIImageView, je supprime toutes les subviews de ma scrollview, puis je les réinitialise avec la array mPhoto.
Pour moi ça peut fuir que de là ... mais alors où... je sais pas du tout.
Je suis passé sur initWithContentsOfFile: sauf que l'initialisation est plus longue.. zut.
Oui j'ai vu ça en cherchant le pourquoi du comment \o/