Question

J'ai une séquence d'images nécessaires à l'affichage dans un court laps de temps (séquence PNG). Il y a au total 31 PNGs au total, chacun avec la taille du fichier à propos de 45KB. Je les ai déjà chargé avec les codes suivants:

imgArray = [[NSMutableArray alloc] init];
for(int i = 0; i <= 30; i++) {
    NSString * filename = [NSString stringWithFormat:@"img_000%.2d.png", i];
    UIImage *temp = [UIImage imageNamed:filename];
    [imgArray addObject:temp];
    [temp release];
    temp = nil;
} 

J'utilise les codes suivants pour afficher les images:

CGImageRef image = [(UIImage *)[imgArray objectAtIndex:imgFrame] CGImage];
imgLayer.contents = (id)image;
if(imgFrame < 29) {
    imgFrame++;
} else {
    imgFrame = 0;
    imgLayer.hidden = TRUE;
    [imgTimer invalidate];
}

où imgLayer est un CALayer. (ImgTimer est un temporisateur de répétition de l'intervalle 0.03s)

Mais je trouve que lorsque j'appelle les images sur, il est très laggy à la première fois. Sauf la 1ère apparition, autre aspect n'a pas de problème.

est-elle liée aux images préchargement? Ou sont mes images trop grande taille de fichier?

Était-ce utile?

La solution

La raison de vos retards sont difficiles à dire sans données de profilage. Mais voici une astuce qui pourrait aider: Joignez-vous à toutes vos images dans un grand dossier. Essayez de le rendre rectangulaire (6x6 peut-être dans votre cas ou 4 * 8). Chargez ensuite ce fichier unique et recadrer chaque image pour l'affichage (à savoir créer une image pour l'affichage de la taille d'une tuile et une tuile copie de la grande image après l'autre dans l'image d'affichage).

Autres conseils

Les images sont chargées quand ils sont utilisés et affichés. Si vous utilisez le profileur de temps Instruments, vous le retard que vous rencontrez. Si vous effectuez un zoom alors que le décalage et regardez ce qui est à l'origine, vous verrez généralement que « copyImageBlockSetPNG » est la fonction de prendre le temps, juste avant « gonfler ».

Ce que vous devez trouver un moyen de faire est de créer vos images et la force de les charger avant de les besoin. C'est une autre histoire apparemment.

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