Анимация в Touch Cocoa? - PullRequest
       18

Анимация в Touch Cocoa?

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

Я использовал UIViewAnimation для простых анимаций в прошлом, теперь я вижу, что Apple не рекомендует использовать этот класс в +4.0.Я начал изучать CATransitions и анимацию.Это дает немного более точный контроль, но, кажется, действительно раздутый для моего ограниченного использования.Когда я пытаюсь получить представление о возможностях на платформе, я наталкиваюсь на кроличью нору с кучей вещей в Core Animation, Quartz и OPEN GLS, но без простых вещей в анимации, чтобы начать.

Мне нужно «анимировать» положение, альфа, масштаб и вращение, иногда все сразу на нескольких UIViews и иметь хук делегата для animationDidStart и didStop. Существуют ли какие-нибудь хорошие движки Tween? Имея дело с Flash и Java, я действительно скучаю.

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

Я был бы очень признателен, если бы кто-то смог начать меня с пути, гдесложность анимации пропорциональна количеству необходимого кода :) Заранее спасибо.

Ответы [ 2 ]

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

Вы обдумываете это.

В то время как Apple не одобряет методы beginAnimations: context: в iOS 4, они предоставили ЧУДЕСНЫЙ новый способ сделать это, который даже проще, чем раньше.Он по-прежнему является частью класса UIView, он просто использует замечательную новую функцию, предоставляемую обновлением: blocks.

На самом деле Apple даже рекомендует использовать вместо этого анимацию на основе блоков.Взято из ссылки на класс UIView:

"Использование этого метода не рекомендуется в iOS 4.0 и более поздних версиях. Вместо этого следует использовать методы анимации на основе блоков."

Блочная анимация действительно проста в использовании.Они принимают форму следующего:

[UIView animateWithDuration:5
   animations:^{
       self.yourView.frame = CGRectMake(100, 100, 100, 200);
       self.yourView.alpha = 0.3;
   }
   completion:^(BOOL finished){
       self.yourView.alpha = 1.0;
       [self.yourProperty doSomethingReallyCool];
   }
];

Выглядит знакомо?Это очень похоже на beginAnimations: context: method.Небольшой раздел ^ {} - это блок.Блоки поддерживают состояние, поэтому они хорошо работают для такого рода вещей.Для получения дополнительной информации о блоках, проверьте

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html.

Убедитесь, что вы просматриваете ссылку на класс UIView, расположенную здесь .Существует ряд новых методов анимации на основе блоков.

Также стоит отметить, что этот блок предназначен только для iOS 4.Итак, предоставлен резервный код для SDK 3 или ниже устройств.Или просто продолжайте использовать beginAnimations: context: пока, но имейте в виду, что его дни сочтены.

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

Вы можете установить свойства, которые должны анимироваться в методе [UIView beginAnimations:nil context:nil];, например:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0f];

view.alpha = 0.0f;
view.center = CGPointMake(34.0f,23.0f);
...

[UIView commitAnimations];
...