iphone: цель c: анимация UIView? - PullRequest
0 голосов
/ 10 июня 2011

Я прочитал документацию Apple: http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html#//apple_ref/doc/uid/TP40009503-CH6-SW1

Для iOS3.0 и более ранних версий, используя это:

Method1:

[UIView beginAnimations:@"ShowHideView" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
...

Новый, iOS4, может сделать это:

Метод2:

[UIView animateWithDuration:1.0 animations:^{
    firstView.alpha = 0.0;
    secondView.alpha = 1.0;
}];

Q1.То, что я хочу знать, в более раннем методе, у них есть этот "ShowHideView" в beginAnimations, является ли этот метод встроенным?

Q2.Существуют ли другие встроенные методы для анимации в beginAnimations?Если да, где я могу найти все эти методы?

Q3.И, наконец, могу ли я использовать эти методы при последнем вызове метода (method2)?

Ответы [ 2 ]

0 голосов
/ 10 июня 2011

Блоки имеют преимущество в том, что могут вкладывать анимации (почти в очередь) с помощью селектора [UIView animateWithDuration:animations:completion:].Вы можете вложить еще один вызов этого метода в блок finished следующим образом:

[UIView animateWithDuration:1.0 animations:^{  
   // your first animations
} completion:^(BOOL finished) {
   [UIView animateWithDuration:1.0 animations:^{
         // more animations
     } completion:^(BOOL finished) {
         // ... maybe even more
     }]
 }]

Я злоупотребляю этим в своем коде и нахожу это намного проще, чем используя код beginAnimations / commitAnimations.И с приближением iOS 5 дни необходимости поддержки iOS 3.x уходят.

0 голосов
/ 10 июня 2011

Вы можете получить ответы на все свои вопросы в UIView Class Reference .

Q1 : ShowHideView, как вы понимаете, вовсе не метод. Это просто «предоставленный приложением идентификатор для анимации». На самом деле вам это не нужно. Когда я использую этот метод, я просто использую NULL вместо предоставления идентификатора там.

Q2 : Вы не устанавливаете анимацию в вызове beginAnimations:context:. Вы даже иллюстрируете это, звоня setAnimationCurve. Вы можете установить анимацию от до typedef.

Q3 : Опять же, вы не объявляете типы анимации в вызове animateWithDuration:animations:. Для этого также используйте setAnimationCurve:.

...