Класс Three20, который реализует основной экран, о котором вы говорите, это TTLauncherView
.
Включает в себя TTLauncherButtons
в качестве своих внутренних элементов, что является производным от UIControl
(как и UIButton
). Если вы хотите реализовать (а не просто использовать) анимацию перетаскивания, вам следует изучить исходный код, доступный в src/Three20UI/Sources/TTLauncherView.m
, что довольно сложно объяснить здесь, так как в нем задействовано много методов. Я бы предложил начать с buttonTouchedDown:withEvent
и startDraggingButton:
и следить за ходом оттуда. Если вас интересует режим редактирования анимации, проверьте селектор wobble
.
Что касается анимации, когда вы выбираете кнопку, это не является чем-то конкретным для Three20. Вы можете изучить, как они делают это в src/Three20UINavigator/Sources/TTBaseNavigationController.m
, ища pushViewController:animatedWithTransition
;
Это код для справки:
- (void)pushViewController: (UIViewController*)controller
animatedWithTransition: (UIViewAnimationTransition)transition {
[self pushViewController:controller animated:NO];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:TT_FLIP_TRANSITION_DURATION];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(pushAnimationDidStop)];
[UIView setAnimationTransition:transition forView:self.view cache:YES];
[UIView commitAnimations];
}
последний блок является тем, который отвечает за эффект анимации.