UIView отменить анимацию - PullRequest
       1

UIView отменить анимацию

2 голосов
/ 12 сентября 2010

В настоящее время у меня есть вид анимации из одной части экрана в другую. Я хочу, чтобы анимация приостанавливалась при нажатии кнопки «Пауза». Это означает, что анимация должна оставаться там, где она (местоположение кадра), когда я «приостанавливаю» анимацию. Я попробовал несколько вещей, но ничто не дало мне желаемого результата. Ниже приведена приблизительная версия моего текущего кода.

-(IBAction)startScroll
{
NSLog(@"Start scroll");
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:30];

//set new frame for view

[UIView commitAnimations];  
}

и один способ остановить анимацию

-(IBAction)pauseScroll
{
NSLog(@"Pause Scroll");

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:0.1];

//Pause animation in it's current location

[UIView commitAnimations];      

}

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

Закончилась работа с таймером и обновление contentOffset каждые несколько секунд.Хотелось бы, чтобы был лучший способ получить текущие координаты даже во время анимации.Материал presentationLayer не дал успешных результатов.

0 голосов
/ 12 сентября 2010

UIView анимации не вполне работают так.Как только вы установите рамку, представление мгновенно перемещается туда с точки зрения вашего приложения;это просто отображение для пользователя, которое анимировано.

Вы можете использовать «слой представления», чтобы приблизительно определить, что отображается на экране (это только приблизительно, так как композитинг происходит в другом потоке):

#import <QuartzCore/CALayer.h>

...

[fooView setFrame:fooView.layer.presentationLayer.frame]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...