|
Июн
03
|
Переходы в представлениях способны оживить любое приложение. На текущий момент таких внедренных переходов насчитывается четыре:
- Отворот вверх (UIViewAnimationTransitionCurlUp) — проверьте на iPhone приложение Maps, хотя это не самый удачный вариант. Все просто: при пролистывании страницы представление отворачивается снизу вверх.
- Отворот вниз (UIViewAnimationTransitionCurlDown)
- Переворот справа (UIViewAnimationTransitionFlipFromRight) — точно так, как в приложении Weather при нажатии кнопки “info”; переворот представления вокруг вертикальной оси.
- Переворот слева (UIViewAnimationTransitionFlipFromLeft)
Код настройки перехода для представления практически ничем не отличается от других разновидностей анимации (см. пример):
1 2 3 4 5 6 7 8 | [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:1.5]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:placeholder cache:YES]; [view1 removeFromSuperview]; [placeholder addSubview:view2]; [view2 removeFromSuperview]; [placeholder addSubview:view1]; [UIView commitAnimations]; |
Представление с именем “placeholder” добавлено как часть “self.view” контроллера представления. “view1” и “view2” — два разных представления, между которыми осуществляется переход (от первого ко второму и наоборот). В процессе анимации / перехода представление переворачивается, скрывая “view1” и открывая “view2“. Находящиеся за ним элементы частично просматриваются. Анимация длится 1,5 с (настройка в “setAnimationDuration“).
Примечание 1
Речь идет об анимации: это оптическая иллюзия, а не поворот/вращение объекта. У объекта “UIView” (в данном случае “placeholder“) нет передней или задней стороны. “view1” после перехода не скрывается за представлением, а удаляется, а объект “placeholder” просматривается через “view2“, являющееся для него подпредставлением.
Примечание 2
На симуляторе iPhone эффект отворота вверх/вниз увидеть нельзя: картинка просто исчезает, хотя на реальном устройстве все выглядит нормально.
Примечание 3
Если анимируемое представление (в нашем случае “placeholder“, поскольку “view1” и “view2” — добавляемые и удаляемые объекты) по размеру больше, чем view1/view2, постоянно будет просматриваться его часть, хотя анимация будет распространяться и на нее.
Примечание 4
От раздражающего белого фрагмента при анимации легко избавиться, добавив за объект “placeholder” что-то черное — еще одно представление или, например, изображение.
Переход с исчезновением изображения
Я уже говорил, что переходов только четыре, но многих интересует эффект исчезновения. Все очень просто: создается обычная анимация, которая будет менять свойство “alpha” для обоих представлений:
1 2 3 4 5 6 7 8 9 | placeholder addSubview:view2]; [placeholder addSubview:view1]; view2.alpha = 0; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:1.5]; view1.alpha = 0; view2.alpha = 1; [UIView commitAnimations]; |
Желающие могут загрузить подготовленный проект и протестировать отвороты вверх и вниз, перевороты справа налево и наоборот, постепенное исчезновение и переворот слева вместе с “self.view” вместо представления “placeholder“.

(8 голосов, средний: 4.88 из 5)
Июнь 3rd, 2009 at 12:45
оттлично спс !!! +5
Июнь 8th, 2009 at 21:28
Согласен, материал как-раз кстати!