UIImageView анимация с остановкой на последнем кадре - PullRequest
2 голосов
/ 03 июля 2010

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

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

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

1 Ответ

1 голос
/ 03 июля 2010

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

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

[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]]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...