Каковы методы блочной анимации в iPhone OS 4.0? - PullRequest
55 голосов
/ 27 июня 2010

Я пытаюсь реализовать игру, используя iPhone OS 4.0 (iOS4?) SDK. В предыдущих версиях 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 использовались для создания блоков анимации.

Ответы [ 3 ]

117 голосов
/ 23 июля 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-секундной анимации. После завершения другой анимации значок вернется в исходное положение.

42 голосов
/ 27 июня 2010

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

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

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

анимация
Блок-объект, содержащий изменения для фиксации взглядов. Это где вы программно изменить любые анимируемые свойства представления в вашей иерархии представлений. это блок не имеет параметров и не имеет возвращаемое значение Этот параметр не должен быть NULL.

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

20 голосов
/ 15 ноября 2011

Вот очень простой пример.Код просто скрывает 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;
}];
...