Le redimensionnement a déjà été traité ailleurs, mais pour votre première question:
Cette méthode est-elle asynchrone?
Oui, elle est asynchrone. Vous pouvez utiliser des blocs de rappel si vous souhaitez traiter l'image, par exemple:
[imageView setImageWithURLRequest:request
placeholderImage:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
// redimensionner l'image ici
// puis définir l'image de l'image view
imageView.image = image;
}
failure:nil];
Vous demandez ensuite:
Il va mettre en cache l'image sur iPhone?
Si vous cherchez simplement à mettre en cache en mémoire pour des raisons de performance, alors la réponse est un oui catégorique. Il utilise un NSCache
(qui sera vidé en cas de pression mémoire). En passant, il mettra en cache l'image telle qu'elle est récupérée, sans refléter la redimension que vous faites après coup.
Si vous cherchez à mettre en cache dans un stockage persistant (c'est-à-dire un cache qui persistera même si vous arrêtez l'application et la redémarrez), cette question est un peu moins claire. AFNetworking
prétend prendre en charge le caching sur disque grâce à son utilisation de NSURLCache
, mais j'ai eu des problèmes pour le faire fonctionner sur iOS. Si vous avez besoin de caching en stockage persistant, je pourrais suggérer une variété d'autres catégories de UIImageView
, comme SDWebImage
.
Quoi qu'il en soit, pour la ligne officielle de AFNetworking
sur le caching, je pourrais vous référer à la discussion sur le Caching dans le AFNetworking FAQ.
Si vous souhaitez un indicateur d'activité, vous pouvez:
UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicatorView.center = self.imageView.center;
[self.view addSubview:activityIndicatorView];
[activityIndicatorView startAnimating];
[imageView setImageWithURLRequest:request
placeholderImage:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
[activityIndicatorView removeFromSuperview];
// redimensionner l'image ici
// puis définir l'image de l'image view
imageView.image = image;
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
[activityIndicatorView removeFromSuperview];
// gérer toute autre erreur que vous souhaitez ici
}];