UIView анимация VS основная анимация - PullRequest
3 голосов
/ 02 июня 2010

Я пытаюсь анимировать вид, скользящий в вид и подпрыгивающий, как только он достигает края экрана.

Базовый пример слайда, который я делаю, выглядит следующим образом:

// The view is added with a rect making it off screen.
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.07];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[theView setFrame:CGRectMake(-5, 0, theView.frame.size.width, theView.frame.size.height)];
[UIView commitAnimations];

Затем в didStopSelector вызывается больше анимации, чтобы создать эффект отскока.Проблема в том, что когда анимируется более одного вида, отскок становится прерывистым и, ну, в общем, больше не отскакивает.

Прежде чем я начну читать о том, как сделать это в Core Animation, (я понимаю, этонемного сложнее) Я хотел бы знать, есть ли на самом деле преимущество использования Core Animation, а не анимации UIView.Если нет, могу ли я что-то сделать для улучшения производительности?

1 Ответ

6 голосов
/ 02 июня 2010

С помощью Core Animation (Layer based) вы можете выполнять множество продвинутых задач, таких как 3D-анимация (встраивание вашего вида в 3D-пространство).

Анимации UiView довольно мощные, и не должны быть узким местом для производительности, пока у вас их не будет много. Я вижу только один пример в вашем коде, и его продолжительность очень мала. Фактически, вы почти мгновенно устанавливаете свойство frame (70 мс - 14 кадров в секунду). Вы должны думать об анимации UIView с точки зрения начала, конца и продолжительности для всего расстояния - которое обычно составляет от 0,2 с до нескольких секунд. Он не предназначен для запуска одной микро анимации за другой.

...