2010-03-16 6 views
1

Existe-t-il un "chargement complet" pour les images dans l'iphone?uiimage oncomplete iphone

Je veux être capable de détruire un indicateur UIActivity une fois et l'image est chargée.

Quelle est la meilleure pratique générale pour ce faire?

Répondre

0

Si vous voulez simplement rejeter une UIActivityIndicatorView après une UIImage a été chargé et affiché correctement dans un UIImageView, vous pouvez essayer ce qui suit:

- (void)loadImageAtPath:(NSString*)path 
{ 
    // show the indicator 
    [_myIndicatorView startAnimating]; 

    // give UIKit a chance to setup and draw the view hierarchy: 
    [self performSelector:@selector(_loadImageAtPath:) 
       withObject:path 
       afterDelay:0]; 
} 

- (void)_loadImageAtPath:(NSString*)path 
{ 
    // load the image 
    _myImageView.image = [UIImage imageWithContentsOfFile:path]; 

    // force the image to load and decompress now 
    _myImageView.image.CGImage 

    // image is ready, so we can remove the indicator view 
    [_myIndicatorView removeFromSuperview]; 
} 

Je dois admettre, je n'ai pas testé le code ci-dessus . S'il vous plaît laissez un commentaire si cela fonctionne.

+0

Merci encore. J'essaierai d'implémenter ceci bientôt et je vous ferai connaître les résultats. – dubbeat

0

UIImage a une API synchrone. Cela signifie que lorsque vous créez (ou dessinez) un UIImage, il a été chargé et décompressé. Cela signifie également qu'un appel de méthode pour créer (ou dessiner) un UIImage peut bloquer aussi longtemps qu'il le faudra pour charger cette image.

Si vous voulez faire d'autres choses lors du chargement d'une image, vous devez charger l'image sur un thread d'arrière-plan, ce qui est possible en utilisant l'API Core Graphics C. UIImage n'est pas thread-safe et peut être utilisé sur le thread principal uniquement.

+0

Merci pour la réponse Nikolai. C'est très intéressant et pour être honnête, ça m'a un peu dérangé par mon manque d'expérience. O-0 Tout ce que je voulais vraiment savoir, c'est comment savoir quand une image est chargée pour pouvoir retirer un indicateur UIActivity ? Peut-être que la réponse était dans votre réponse et je ne comprends pas? :) – dubbeat