4 votes

IPhone : Téléchargement de l'image puis affichage dans UIImageView avec l'extension @2x

Je suis en train d'essayer de télécharger une image à partir de l'URL de l'image NSUrl et de l'afficher dans un UIImageView avec une densité de pixels Retina en ajoutant @2x; cela doit être affiché sur un iPhone 4 ou ultérieur. J'ai utilisé une partie du code d'ici: Comment télécharger et enregistrer un fichier localement sur iOS en utilisant Objective C?

Il ne montre rien sur l'imageView quand je le démarre, et la dernière ligne NSLog imprime des dimensions vraiment petites pour l'image, suggérant qu'il n'en a pas vraiment téléchargé une. Qu'est-ce qui ne va pas avec mon code en plus du fait qu'il a une très mauvaise vérification d'erreur?

- (void) presentImage: (NSURL*) imageURL{
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
NSLog([imageURL description]);

if ( imageData )
{
    NSArray   *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString  *documentsDirectory = [paths objectAtIndex:0];

    NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"0@2x.png"];
    [imageData writeToFile:filePath atomically:YES];
}
else NSLog(@"Erreur lors du chargement de l'image!!!");

imageData = [NSData dataWithContentsOfFile:@"0@2x.png"];
UIImage *image = [[UIImage alloc] initWithData: imageData];
NSLog(@"%f1 x %f2", image.size.width, image.size.height);
[self.imageView setImage: image];

}

ÉDITER: OK, j'ai corrigé cela. Je me sens stupide. Je devais mettre

imageData = [NSData dataWithContentsOfFile:@filePath];

et mettre filePath dans la portée au lieu de simplement mettre @"0@2x.png".

4voto

mprivat Points 9217

Vous compliquez trop le problème je pense. Utilisez cette méthode:

+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale

Et définissez l'échelle sur 2.0 lorsque vous avez une image retina.

-(void)présenterImage:(NSURL*)imageURL {
    NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
    UIImage *image = [UIImage imageWithData:imageData scale:2.0];
    [self.imageView setImage: image];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X