Question

Je crains que ce soit un code diabolique:

CGRect iRect = CGRectMake(0.0f, 0.0f, 320.0f, 400.0f);
UIImageView *imgView = [[UIImageView alloc] initWithFrame:iRect];
imgView.animationImages = [NSArray arrayWithObjects:
                [UIImage imageNamed:@"b0001.png"],
                [UIImage imageNamed:@"b0002.png"],
                // 150 more
                [UIImage imageNamed:@"b0152.png"],
                nil];

Je me souviens un peu de cette imageNamed: is evil. Si je le fais de cette façon et si je dois fournir des objets UIImage, ces objets UIImage chargent immédiatement ces fichiers d’image en mémoire, non? Et, à part cela, tous ces 152 objets volumineux UIImage prennent une pause importante dans la mémoire car ils sont autoreleased, n'est-ce pas?

En conclusion, utiliser cette technique est nul. Le fait-il? Je ne sais pas. Sur mon iPod touch de première génération, cet appareil semble fonctionner sans décalage à 25 ips. Très lisse et agréable. La seule chose qui me fait peur, c’est que certains autres appareils puissent penser différemment à ce sujet. Bien que je dispose du plus faible ipod touch programmable disponible.

Quoi qu'il en soit, est-ce que quelqu'un y voit une possibilité d'amélioration? Ou ne devrais-je pas utiliser cela et utiliser setImage: of UIImageView dans un algorithme propre qui chargerait et positionnerait ces images avec des sélecteurs retardés en utilisant cette chose chunky imageWithContentsOfFile (peut être nommé différent), sans relâche automatique? Peut-être qu'un type malin a-t-il écrit une petite librairie pour des vidéos haute performance composées de séquences d'images?

(non, la vidéo n'est pas une option sur l'iPhone; les frameworks Apple pour cela ne supportent que le plein écran, et je ne connais rien d'autre qui puisse le faire.)

Était-ce utile?

La solution

Je voudrais éviter d'essayer de charger autant d'images dans un tableau UIImageView. Une question similaire a été posée ici . La méthode de mise en mémoire tampon que je décris devrait également s’appliquer à votre situation.

Autres conseils

Vous avez raison à propos de imageNamed ... vous ne devez pas l’utiliser dans de nombreux cas car il met en cache l’image. Utilisez:

[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image1" ofType:@"png"];

Vous ne pouvez utiliser imageNamed que lorsque

1) Vous réutilisez une icône à plusieurs reprises (vues de table, etc.)

2) Vous n'avez pas implémenté votre propre système de mise en cache

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top