2011-05-08 3 views
0

Я перемещаю представление с помощью CGAffineTransformTranslate и хочу замедлить движение вниз. Я попытался использовать [UIView setAnimationDuration], но он ничего не делает, и документы не поощряют его использование в iOS 4.0 и более поздних версиях.Продолжительность при использовании CGAffineTransformTranslate

whatIfToolBar.transform = CGAffineTransformTranslate(whatIfToolBar.transform,0.0, -whatIfToolBar.frame.size.height); 

Каков правильный способ установить продолжительность?

Спасибо,

Джон

ответ

4

я должен был читать дальше, прежде чем задавать свой вопрос ...

[UIView setAnimationDuration] работает только при использовании Begin/Commit методы и должны вызываться между вызовами начинать и фиксировать анимацию и перед изменением любых анимационных свойств представления.

Для приложений iOS 4 или более поздних версий вы должны использовать блочные методы для анимации. Длительность устанавливается при вызове метода блока. См. Animations section of the View Programming Guide for iOS".

Если приложение будет запущено в iOS 3.2 и ранее, вы должны использовать методы Begin/Commit.

В моем случае я использовал Begin/Commit методы ...

[UIView beginAnimations:@"whatIfToolBar" context:whatIfToolBar]; 

[UIView setAnimationDuration:0.5]; 
whatIfToolBar.transform = CGAffineTransformTranslate(CGAffineTransformIdentity,0.0, - whatIfToolBar.frame.size.height); 

[UIView commitAnimations]; 

Если бы я должен был использовать методы на основе блоков, это будет выглядеть, как это ...

[UIView animateWithDuration:0.5 
      animations:^{ 
       whatIfToolBar.transform = CGAffineTransformTranslate(CGAffineTransformIdentity,0.0, -whatIfToolBar.frame.size.height); 

      } 
]; 

Джон

+0

Все еще актуально в 2017 году в iOS 10. (Методы Begin/Commit) –

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