2008-10-31 6 views
3

У меня есть анимации, что я отображающий с помощью UIImageView:Как приостановить UIImageView анимации

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

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

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

ответ

8

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

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

-1

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

18

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

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. 
+0

Принятый ответ – Bryan 2009-08-20 00:08:55

+0

Я тоже хотел приостановить мою анимацию .. В этом коде wat является презентационным слоем? – Cathy 2011-07-13 11:27:01

+0

Этот ответ должен стать принятым ответом. – Johnny 2012-08-21 05:30:26

0

Другой вариант установить свойство изображения, а также 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]; 
3

@oddmeter просто немного изменить:

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


    //Then when you need to pause; 

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

Это должно сделать трюк: https://developer.apple.com/library/ios/#qa/qa2009/qa1673.html

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

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

Смежные вопросы