Что такое блочные методы анимации в iPhone OS 4.0?

Я пытаюсь реализовать игру с помощью SDK для iPhone OS 4.0 (iOS4?). В предыдущих версиях SDK я использовал [UIView beginAnimations: context:] и [UIView commitAnimations] для создания некоторых анимаций. Однако, когда я смотрю документацию по функциям в 4.0, я вижу этот комментарий.

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

Вы можете найти его здесь: http://developer.apple.com/iphone/library/documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/clm/UIView/commitAnimations.

У меня вопрос: что такое блочная анимация в iPhone OS 4.0? Я думал, что для создания блоков анимации использовались функции beginAnimations: context: и commitAnimations ..


person kkrizka    schedule 27.06.2010    source источник


Ответы (3)


Если вы перейдете по этой ссылке и немного прокрутите вверх, вы увидите методы анимации, новые для ios4.

animateWithDuration:animations:
animateWithDuration:animations:completion:
animateWithDuration:delay:options:animations:completion:

Есть также несколько связанных методов перехода. Для каждого из них аргумент анимации представляет собой блок объект:

анимации
Блочный объект, содержащий изменения для фиксации в представлениях. Здесь вы программно изменяете любые анимируемые свойства представлений в иерархии представлений. Этот блок не принимает параметров и не имеет возвращаемого значения. Этот параметр не должен быть ПУСТО (NULL).

Блокировать объекты являются частью параллельного программирования < / а>

person drawnonward    schedule 27.06.2010

Я разместил пример в моем блоге:

    CGPoint originalCenter = icon.center;
    [UIView animateWithDuration:2.0
            animations:^{ 
                CGPoint center = icon.center;
                center.y += 60;
                icon.center = center;
            } 
            completion:^(BOOL finished){

                [UIView animateWithDuration:2.0
                        animations:^{ 
                            icon.center = originalCenter;
                        } 
                        completion:^(BOOL finished){
                            ;
                        }];

            }];

Приведенный выше код анимирует UIImageView * (значок) в виде 2-секундной анимации. После завершения другая анимация вернет значок в исходное положение.

person ohho    schedule 23.07.2010
comment
Почему бы не использовать [UIView setAnimationRepeatAutoreverses:YES]; в блоке анимации и self.transform = CGAffineTransformIdentity; в блоке завершения? :) - person Sascha Manuel Hameister; 05.10.2012
comment
как я могу повторить эту анимацию? - person βhargavḯ; 13.12.2012
comment
это будет повторяться только указанное количество раз. Хорошо найденное решение. спасибо за ответ. - person βhargavḯ; 13.12.2012

Вот очень простой пример. Код просто затухает UIView и скрывает его после завершения анимации:

[UIView animateWithDuration:1.0 
                      delay:0.0 
                    options:UIViewAnimationOptionCurveEaseInOut 
                 animations:^ {
                     bgDisplay.alpha = 0.0;
                 } 
                 completion:^(BOOL finished) {
                     bgDisplay.hidden = YES;
                 }];

или в другом форматировании:

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^ {
    bgDisplay.alpha = 0.0;
} completion:^(BOOL finished) {
    bgDisplay.hidden = YES;
}];
person cldrr    schedule 15.11.2011
comment
Предупреждаем, что указанный выше параметр устарел в версии 6.0 - developer.apple.com/library/ios/#documentation/uikit/reference/. - person PruitIgoe; 13.03.2013
comment
Что именно устарело в версии 6.0? Ни UIViewAnimationCurveEaseInOut, ни animateWithDuration не помечены как устаревшие! - person cldrr; 14.03.2013