2012-09-08 1 views
0

Je peux utiliser SDWebImage pour charger une image de petite taille avec une URL à afficher sur un UIImageView. Mais je ne sais pas comment charger une image de plus grande taille avec une autre URL à afficher sur le même UIImageView après que j'ai chargé l'image de plus petite taille.Comment charger une image de grande taille après le chargement et l'affichage d'une image de petite taille sur un UIImageView?

[aImageView setImageWithURL:fristUrl placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(UIImage *image) { 
    [aImageView setImageWithURL:secondUrl placeholderImage:image success:^(UIImage *image) { 
     ; 
    } failure:^(NSError *error) { 
     NSLog(@"error105size:%@", [error description]); 
    }]; 
} failure:^(NSError *error) { 
    NSLog(@"error50size:%@", [error description]); 
}]; 

J'ai utilisé le code ci-dessus, mais il s'est écrasé. J'espère que vos réponses.

Répondre

0

En fait, vous n'avez pas besoin de créer une caché UIImageView faire l'affaire. Ce que vous devez faire est de définir la première URL (avec l'image plus petite) à télécharger directement dans votre UIImageView, puis d'utiliser SDWebImageManager pour télécharger la version plus grande en arrière-plan. Une fois le téléchargement terminé, définissez simplement l'image téléchargée dans votre vue d'image.

Voilà comment vous pouvez le faire:

// First let the smaller image download naturally 
[self.imageView setImageWithURL:self.imageURL]; 

// Slowly download the larger version of the image 
SDWebImageManager *manager = [SDWebImageManager sharedManager]; 
[manager downloadWithURL:self.currentPhoto.largeImageURL options:SDWebImageLowPriority progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) { 
    if (image) { 
     [self.imageView setImage:image]; 
    } 
}]; 

Notez comment je l'option SDWebImageLowPriority. De cette façon, l'image (qui devrait être naturellement plus grande que la première) sera téléchargée en faible priorité et ne devrait pas annuler le premier téléchargement.

0
UIButton *btn = [[UIButton alloc] init]; 
[btn sd_setImageWithURL:[NSURL URLWithString:obj.thumbnail_pic] forState:UIControlStateNormal placeholderImage:[UIImage imageNamed:@"photoDefault.png"] options:SDWebImageProgressiveDownload completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 
    NSLog(@"img samll download ok:%@",obj.thumbnail_pic); 
    if (image) { 
     [btn sd_setImageWithURL: [NSURL URLWithString:[ctl getBigImg:obj.thumbnail_pic]] forState:UIControlStateNormal 
       placeholderImage:image]; 
    } 
}]; 
Questions connexes