2010-11-04 34 views
0

Je télécharge beaucoup d'images à afficher à l'utilisateur.
Chacune de ces images ont 512x512. Dans un iPhone résolution normale, tout fonctionne très bien, mais dans l'iPhone4, ils semblent mis à l'échelleiPhone4: empêcher UIImageView de mettre à l'échelle

Si ces images ont été extraites à partir des ressources,
Je voudrais simplement ajouter un @2x au nom de l'image et tout fonctionnerait,
le problème est que ces images sont chargées dynamiquement à partir du Web.

Comment puis-je empêcher cette UIImageViews d'être mise à l'échelle sur l'écran Retina?

EDIT: Voici les Sreenshot:

http://img836.imageshack.us/img836/5173/screenshot20101104at104.png

Merci à tous.

+0

Qu'entendez-vous par la mise à l'échelle? Pouvez-vous poster quelques captures d'écran? –

+0

voulez-vous dire que les images sont affichées à 256x256 sur votre iphone4? – Bongeh

+0

Leur résolution réelle est 512x512, mais dans l'iPhone4, ils affichent au double de la taille, car chaque point que deux pixels dans l'affichage de la rétine. Comment puis-je empêcher cela? – Tsimmi

Répondre

6

regardez ce code - je l'utilise dans une catégorie UIImage quand je veux contrôler si l'image serait chargée avec scale = 2 ou scale = 1 ... Voir où NSData récupère le contenu du fichier (dans mon code) et le remplacer par votre code qui va chercher des images à partir du Web:

if ([[[UIDevice currentDevice] systemVersion] intValue] >= 4 && [[UIScreen mainScreen] scale] == 2.0) { 
    if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { 
     return [self initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:path]] CGImage] scale:2.0 orientation:UIImageOrientationUp]; 
    } 
} else [ load here the image via imageWithContentsOfFile or whatever ] 

donc, l'astuce est dans le paramètre « échelle » de la « initWithCGImage » de la classe UIImage, passer 2.0 si vous chargez des images haute res ou passez 1.0 si vous chargez des images à basse résolution - c'est comme le meilleur contrôle que vous prenez sur le chargement de l'image haute résolution.

meilleur, Marin

1

Essayez peut-être de vérifier si l'appareil a un affichage rétine et s'il essaie de réduire l'image. Vous pouvez voir si il a l'affichage de la rétine avec:

if ([[[UIDevice currentDevice] systemVersion] intValue] >= 4 && [[UIScreen mainScreen] scale] == 2.0) { 
    //do the scaling of image(s) 
} 

Faites-moi savoir si cela fait l'affaire.