Что такое методы анимации на основе блоков в iPhone OS 4.0?
Я пытаюсь реализовать игру с помощью 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 ответа:
Если вы перейдете по этой ссылке и немного прокрутите вверх, вы увидите анимированные методы, новые для ios4.
animateWithDuration:animations: animateWithDuration:animations:completion: animateWithDuration:delay:options:animations:completion:
есть также некоторые связанные методы перехода. Для каждого из них аргументом анимации является block object:
анимации
Блочный объект, содержащий изменения для фиксации в представлениях. Это где вы программно изменение любых анимируемых свойств представления в иерархии представлений. Этот блок не принимает параметров и не имеет значение. Этот параметр не должен иметь значение null.
я опубликовал пример в моем блог:
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-секундной анимации. После завершения другая анимация переместит значок обратно в исходное положение.
вот очень простой пример. Код просто исчезает из 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; }];