2010-07-03 8 views
2

J'utilise les animationsImages de UIImageView pour afficher quelques images sur une seconde. Je veux montrer l'animation puis la faire reposer sur le cadre final. Dans OS 3.1.3, cela a bien fonctionné pour cela:Animation UIImageView avec arrêt sur la dernière image

[self setAnimationRepeatCount:1]; 
[self setAnimationDuration:1]; 
[self startAnimating]; 
// auto set the last image in the frame 
[self setImage:[UIImage imageNamed:[NSString stringWithFormat:@"frame-%d_29.png", self.frameSet]]]; 

Lorsque l'animation était terminée, l'image était affichée. Pas de chance avec OS 4. J'ai essayé de définir un NSTimer et de définir le cadre statique quand cela se termine, mais il y a parfois un scintillement notable avec cette méthode. Toute solution?

Répondre

1

Modifier

Encore mieux que la solution précédente est simplement de changer l'ordre du début et de définir:

[self setImage:[UIImage imageNamed:[NSString stringWithFormat:@"frame-%d_29.png", self.frameSet]]]; 
[self startAnimating]; 

Après déconner un peu plus, je trouve que la solution NSTimer effectivement fonctionne si vous définissez le retard à 29/30ths de seconde, à savoir ~ 0,97:

- (void)doAnimation 
{ 
    [self setAnimationRepeatCount:1]; 
    [self setAnimationDuration:1]; 
    [self startAnimating]; 
    [NSTimer scheduledTimerWithTimeInterval:0.97f 
            target:self 
            selector:@selector(onTimer:) 
            userInfo:nil 
            repeats:NO]; 
} 

- (void)onTimer:(NSTimer *)theTimer 
{ 
    [self stopAnimating]; 
    [self setImage:[UIImage imageNamed:[NSString stringWithFormat:@"frame-%d_29.png", self.frameSet]]]; 
}