2010-07-03 4 views
2

Я использую анимацию UIImageView для отображения некоторых кадров за секунду. Я хочу показать анимацию, чтобы она осталась на последнем кадре. В ОС 3.1.3 это отлично работало для этого:анимация UIImageView с остановкой в ​​финальном кадре

[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]]]; 

Когда анимация была выполнена, будет отображаться изображение. Нет такой удачи с OS 4. Я пробовал установить NSTimer и установить статический фрейм, когда это заканчивается, но иногда появляется мерцание мерцания с этим методом. Любое решение?

ответ

1

Редактировать

Даже лучше, чем предыдущее решение просто переключить порядок старта и установить:

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

После Мессинг вокруг немного больше, я обнаружил, что решение NSTimer на самом деле работает, если вы установите задержку на 29/30 секунд, т. е. ~ 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]]]; 
} 
Смежные вопросы