Вопрос

У меня есть анимация, которую я показываю с помощью UIImageView:

imageView.animationImages = myImages;
imageView.animationDuration = 3;
[imageView startAnimating];

Я знаю, что могу остановить это с помощью stopAnimating, но я хочу сделать это, чтобы сделать паузу. Причина в том, что когда вы вызываете stop, ни одно из ваших анимационных изображений не отображается, в то время как я хотел бы, чтобы последнее, которое работает в тот момент, когда я нажимал кнопку, не ложилось спать.

Я попытался установить длительность гораздо большего числа, но это также приводит к исчезновению всех изображений. Должен быть действительно простой способ сделать это?

Это было полезно?

Решение 2

Хммм ... так как никто, кажется, не знает, я думаю, что это невозможно.

Я пошел дальше и написал свой собственный UIView с UIImageView , который использует NSTimer для переключаться между изображениями. Преимущество этого состоит в том, что я могу приостановить и возобновить таймер на досуге, и производительность не кажется проблемой.

Другие советы

Этот код приостановит анимированный объект в его текущей позиции в процессе анимации. Если вы записываете другие переменные, такие как время, прогресс или все, что вам нужно, возобновить анимацию будет довольно тривиально.

UIView *viewBeingAnimated = //your view that is being animated
viewBeingAnimated.frame = [[viewBeingAnimated.layer presentationLayer] frame];
[viewBeingAnimated.layer removeAllAnimations];
//when user unpauses, create new animation from current position.

@oddmeter просто немного отредактируйте:

    animatedView.animationImages = images; //images is your array
    [animatedView startAnimating];


    //Then when you need to pause;

[animatedView stopAnimating]; //Important!!
    animatedView.image = [images objectAtIndex: 0];

Это должно помочь: https://developer.apple .com / библиотека / ИОС / # ОК / qa2009 / qa1673.html

В основном он говорит вам, что вам нужно сделать, чтобы приостановить / возобновить любую анимацию на основе CALayer .

Если вам неудобно использовать методы CALayer в управляемой анимации UIImageView , вы всегда можете просто сделать анимацию на основе массива UIImage . Необходимый код очень короткий, вы можете взять его отсюда: http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.html

Другой вариант - установить свойство изображения, а также свойство animationImages . При этом будет отображаться статическое изображение, когда анимация UIImageView остановлена.

Предполагая, что ваш класс является подклассом UIImageView и имеет NSMutableArray изображений, выполните следующие действия:

self.animationImages = images;
//yes, I'm skipping the step to check and make sure you have at least one
//element in your array
self.image = [images objectAtIndex: 0];

Может быть, вы можете сделать скриншот последнего анимированного изображения и показать его?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top