Что такое блочные методы анимации в 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 для создания блоков анимации.
Ответы
Ответ 1
Если вы следуете этой ссылке и немного прокрутите список, вы увидите новые методы iimate для анимации.
animateWithDuration:animations:
animateWithDuration:animations:completion:
animateWithDuration:delay:options:animations:completion:
Существуют также некоторые связанные методы перехода. Для каждого из них аргумент анимации является блочным объектом:
анимация
Объект блока, содержащий изменения для фиксации в представлениях. Здесь вы программно изменить любые анимационные свойства взгляды в иерархии вашего представления. Эта блок не принимает параметров и не имеет возвращаемое значение. Этот параметр не должен NULL.
Объекты блока являются частью Параллельное программирование
Ответ 2
Я разместил пример в blog:
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-секундной анимации. После его завершения другая анимация переместит значок обратно в исходное положение.
Ответ 3
Вот очень простой пример. Код просто затухает 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;
}];