2010-06-02 5 views
3

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

Основной пример слайде я делаю это следующим образом:

// 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. Если нет, есть ли что-то, что я могу сделать для повышения производительности?

ответ

6

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

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

+0

Есть несколько чрезвычайно коротких анимаций, которые следуют приведенному примеру, если они не предназначены для такого рода вещей, что я должен использовать вместо этого, чтобы дать эффект отскока? –

+0

Я бы не сдался слишком рано на UIViews и их анимации. Просто подумайте, имеет ли смысл анимацию. Если вы перемещаете представление в течение 0,07 секунд, ваша анимация в любом случае не является реальной анимацией, так как почти нет позиций для интерполяции между началом и концом. Как должен кто-нибудь следить за этой анимацией? Если это часть более длинного линейного движения, тогда оживите все это как одну анимацию. Кроме того, существует свойство repeatCount, которое может быть или не быть полезным в вашем сценарии. Точка, 0,07 с не является резонансным временным интервалом для любой анимации. Может быть, публикация всей последовательности полезна. – Eiko

+0

Вы правы, 0.07 секунды быстрая, очень быстрая, но есть определенная разница визуально между использованием очень быстрой анимации и без анимации вообще. Я думаю, что мой вопрос на этом этапе должен состоять из 3 или 4 одновременных очень быстрых анимаций, вызывающих ржавость, независимо от скорости? –

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