Скорость анимации различается между beginAnimations и использованием блока анимации - PullRequest
3 голосов
/ 19 ноября 2010

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

Это то, с чего я начал изначально:

birdFly.image = [UIImage imageNamed: @"bird1.png"];
[self.view addSubview:birdFly];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:20];
birdFly.frame = CGRectMake(-1116,27,111,48);
[UIView commitAnimations];
[birdFly release];

Это то, что я сначала попытался заменить тем, что у меня было выше. При использовании этого кода анимация выполняется намного быстрее, чем при использовании исходного кода. Кажется, даже изменение продолжительности не меняет скорости вообще:

birdFly.image = [UIImage imageNamed: @"bird1.png"];
[self.view addSubview:birdFly];
[UIView animateWithDuration:20
    animations:^{
        birdFly.frame = CGRectMake(-1116,27,111,48);
    }];

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

birdFly.image = [UIImage imageNamed: @"bird1.png"];
[self.view addSubview:birdFly];     
UIViewAnimationOptions options = UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction;
        [UIView animateWithDuration:20 delay:0.0 options:options animations:^
        {
            birdFly.frame = CGRectMake(-1116,27,111,48);
        } completion:nil];

Код все делает одно и то же? Я просто что-то упускаю здесь очень просто? Я думал, что увеличение продолжительности сделает птицу медленнее, а уменьшение - быстрее, но, похоже, это никак не повлияет на изменение ее с помощью блоков.

Любое руководство будет оценено.

Спасибо.

Aaron

1 Ответ

4 голосов
/ 20 ноября 2010

Если ваш анимационный блок находится в другом анимационном блоке, -animateWithDuration:animations: унаследует длительность внешнего блока. Попробуйте добавить UIViewAnimationOptionOverrideInheritedDuration в список параметров (и, возможно, UIViewAnimationOptionOverrideInheritedCurve, если вам тоже нужно переопределить кривую).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...