вопрос о внедрении Facebook-клиента iphone - PullRequest
0 голосов
/ 24 мая 2011

Сейчас я изучаю Three20 и хочу на практике реализовать клиент iphone для Facebook. На главном экране iphone-клиента facebook под панелью поиска есть несколько пунктов. Я думаю, что это сочетание прокрутки и управления страницей. когда вы долго нажимаете на определенный элемент, на значке приложения на вашем iphone будет выглядеть то же, что и вы: вы можете перетащить элемент на новую позицию и даже удалить добавленные элементы. Итак, мои вопросы:

  1. Что это за контроль над элементами, пользовательский TTButton? а как можно реализовать анимацию, особенно перетаскивание?
  2. когда вы нажимаете один элемент, появляется одно новое представление. Как реализовать анимацию, например, тень?

спасибо!

1 Ответ

0 голосов
/ 24 мая 2011

Класс Three20, который реализует основной экран, о котором вы говорите, это TTLauncherView.

  1. Включает в себя TTLauncherButtons в качестве своих внутренних элементов, что является производным от UIControl (как и UIButton). Если вы хотите реализовать (а не просто использовать) анимацию перетаскивания, вам следует изучить исходный код, доступный в src/Three20UI/Sources/TTLauncherView.m, что довольно сложно объяснить здесь, так как в нем задействовано много методов. Я бы предложил начать с buttonTouchedDown:withEvent и startDraggingButton: и следить за ходом оттуда. Если вас интересует режим редактирования анимации, проверьте селектор wobble.

  2. Что касается анимации, когда вы выбираете кнопку, это не является чем-то конкретным для 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];
} 

последний блок является тем, который отвечает за эффект анимации.

...