Используете CATransition In Three20?

Я хочу реализовать CATransitions в TTNavigator, я знаю, что метод openURL может принимать UIViewAnimationTransition, но это дает мне только анимацию переворачивания и скручивания, но с CATransition у меня есть доступ к еще 8, из которых kCATransitionFromRight, kCATransitionFromLeft, kCATransitionFromTop, kCATransitionFromBottom Я специально после.

С UINavigationController я бы использовал что-то вроде этого фрагмента кода, чтобы дать мне больше контроля над анимацией:

    CATransition *transition = [CATransition animation];
    transition.duration = 0.5f;
    transition.timingFunction = [CAMediaTimingFunction
    functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    [self.navigationController.view.layer addAnimation:transition
    forKey:nil];

Однако этот код не работает с TTNavigator. Кто-нибудь знает, как заставить свои собственные анимации работать с TTNavigator? Или я делаю что-то не так в своем коде?


person Bongeh    schedule 23.08.2010    source источник


Ответы (2)


Оказывается, я ответил на свой вопрос, но вместо того, чтобы использовать последнюю строку кода для установки анимации в navigationController, я пытался установить переход к URLAction. Как только я вернул эту строку и закомментировал код перехода URLAction, похоже, он работает!

    // create the URLAction
TTURLAction* urlAction;
urlAction = [TTURLAction actionWithURLPath:@"tt://Images"]; 
[urlAction applyAnimated:YES];

    // create the CATransition and set it to the navigation controller
CATransition *transition = [CATransition animation];
transition.duration = 0.5f;
transition.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
[self.navigationController.view.layer addAnimation:transition
forKey:nil]; 

    // tell the navigator to run the action
[[TTNavigator navigator] openURLAction:urlAction];

Надеюсь, это поможет кому-то еще в будущем!

person Bongeh    schedule 23.08.2010

Вы можете легко добавить флип или любую другую анимацию в TTNavigator с помощью TTLauncherView следующим образом:

- (void)launcherView:(TTLauncherView*)launcher didSelectItem:(TTLauncherItem*)item {
    TTURLAction* action = [TTURLAction actionWithURLPath:item.URL];
    [action setAnimated:YES];
    [action setTransition:UIViewAnimationTransitionFlipFromLeft];
    [[TTNavigator navigator] openURLAction:action];
}

Это заставляет TTNavigator использовать анимированный переход при отображении нового URL.

person Dmitri Sologoubenko    schedule 03.02.2011