Каков наилучший способ воспроизвести анимацию UIImageView один раз и удалить ее из памяти сразу после воспроизведения? - PullRequest
1 голос
/ 17 октября 2011

Мне трудно удалить мою анимацию из памяти. Каков наилучший способ сделать это?

Это мой код анимации:

-(IBAction)animationOneStart { 

NSMutableArray *images = [[NSMutableArray alloc] initWithCapacity:88];

for(int count = 1; count <= 88; count++)
{
NSString *fileName = [NSString stringWithFormat:@"testPic1_%03d.jpg", count];
UIImage  *frame    = [UIImage imageNamed:fileName];
[images addObject:frame];
}

loadingImageView.animationImages = images;

loadingImageView.animationDuration = 5;
loadingImageView.animationRepeatCount = 1; //Repeats indefinitely

[loadingImageView startAnimating];
[images release];

}

Спасибо!

Ответы [ 3 ]

1 голос
/ 17 октября 2011

Больше не нужно выпускать его с ARC под Xcode 4.2!Обновление сегодня:)

1 голос
/ 17 октября 2011
[images removeAllObjects];
[images release];
0 голосов
/ 17 октября 2011

Насколько я могу судить, обратного вызова для определения окончания анимации imageView нет.Это прискорбно, поскольку это означает, что для удаления анимации, когда анимация imageView завершена, вам нужно будет повторно проверять метод isAnimating imageView, пока он не вернет false.Ниже приведен пример того, что я имею в виду:

Возможно, вы сможете сделать что-то подобное - в исходном коде добавьте следующую строку

[loadingImageView startAnimating];
[images release];

[self performSelector:@selector(checkIfAnimationIsFinished) withObject:nil afterDelay:4.5f];

Затем создайте метод

-(void)checkIfAnimationIsFinished {
    if (![loadingImageView isAnimating]) {
        [loadingImageView release];
    } else {
        [self performSelector:@selector(checkIfAnimationIsFinished) withObject:nil afterDelay:0.5f];
    }
}

Это был только пример, я использовал значения 4.5f и 0.5f, потому что, к сожалению, время не точное, это скорее приблизительная цифра.4.9f и 0.1f могут работать лучше.Несмотря на это, проблема заключается в том, что если вы установите метод для запуска 5.0f секунд после запуска анимации, это не на 100% уверен, что анимация будет закончена или нет.Поэтому вам нужно будет неоднократно проверять, не завершено ли это.

В любом случае, это не самое чистое решение, но если кто-то еще не знает, как получить обратный вызов, когда анимация imageView закончена, я не знаюлучшего решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...