2010-09-17 21 views
2

Actuellement, je récupère un tas d'images sur Internet et les redimensionne puis je les affiche sur mon écran. Le problème est que je le fais dans la méthode viewDidLoad - ainsi, lorsque l'utilisateur tape, il doit attendre que ce traitement se produise, puis la vue est affichée, ce qui provoque un léger retard.Accélérer le chargement des images

Y at-il de toute façon que je pourrais montrer la vue, puis étincelle d'une manière ou d'une autre le chargement des images APRÈS que l'utilisateur ait la vue devant eux - semblable au chargement d'une page Web?

- (void)configureImages 
{ 
    if ([currentHotel.hotelImages count] > 0) 
    { 
    imageView1.image = [self getScaledImageFromURL: [currentHotel.hotelImages objectAtIndex:0]]; 
    imageView2.image = [self getScaledImageFromURL: [currentHotel.hotelImages objectAtIndex:1]]; 
    imageView3.image = [self getScaledImageFromURL: [currentHotel.hotelImages objectAtIndex:2]];   

    } 
} 

Répondre

0

Les applications doivent utiliser les API réseau asynchrones pour tous les réseaux pour éviter de bloquer l'expérience utilisateur. Il est préférable d'éviter d'ajouter des threads (comme cela se produit lorsque vous utilisez NSOperationQueue) pour des tâches telles que la mise en réseau où le système d'exploitation fournit déjà des alternatives asynchrones.

Apple fournit le NSURLConnection asynchrone, qui fonctionne bien mais qui est un peu fastidieux à utiliser. Vous pouvez ajouter un wrapper simple comme gtm-http-fetcher qui réduit les extractions asynchrones à une seule ligne avec un rappel lorsque la charge est terminée. Cela vous permettra de démarrer toutes les charges dans votre viewDidLoad: méthode sans bloquer l'interface utilisateur.

+0

Vous êtes un Dieu parmi les hommes! – TheLearner

Questions connexes