UIView animatewithduration — iOS

Я пытаюсь переместить метку из точки А в точку Б, используя UIView animateWithDuration, как показано ниже.

    [UIView animateWithDuration:3 delay:0 options:UIViewAnimationTransitionNone animations:^(void){
        label.alpha = 1;
        label.center = CGPointMake(label.center.x , label.center.y +740);

        }completion:^(BOOL Finished){ 
         label.alpha = 0;
        label.center = CGPointMake(label.center.x , label.center.y - 740);]

Как только метка достигает 740, она замедляется. Возможно ли равномерное движение в точку B вместо замедления?


person DesperateLearner    schedule 14.10.2012    source источник


Ответы (3)


Использовать это:

[UIView animateWithDuration:3 delay:0 options:UIViewAnimationTransitionNone | UIViewAnimationOptionCurveLinear animations:^(void){ 
...
person sergio    schedule 14.10.2012

Просто измените параметр анимации на UIViewAnimationOptionCurveLinear, чтобы использовать анимацию для удаления всех ускорений и замедлений, или UIViewAnimationOptionCurveEaseIn, чтобы сохранить медленный старт без замедления в конце.

То, что вы видите, ожидаемо и даже задокументировано (см. ниже). По умолчанию анимация начинается и заканчивается медленно:

Discussion

Этот метод выполняет указанную анимацию немедленно, используя класс UIViewAnimationOptionCurveEaseInOut.

person David Rönnqvist    schedule 14.10.2012

Включите UIViewAnimationCurveLinear в опции вместо UIViewAnimationTransitionNone. UIViewAnimationTransitionNone не предназначен для такой анимации. Он предназначен для переходов контроллера представления.

person rmaddy    schedule 14.10.2012