2010-08-23 24 views
3

Je cherche à mettre en œuvre CATransitions au sein TTNavigator, je sais que la méthode openURL peut prendre un UIViewAnimationTransition mais qui ne me donne animations flipping et curling, mais avec CATransition j'avoir accès à un autre 8, dont kCATransitionFromRight, kCATransitionFromLeft, kCATransitionFromTop, kCATransitionFromBottom sont ceux que je suis spécifiquement après.Utilisation de CATRansition dans Three20?

Avec un UINavigationController utiliseraient quelque chose comme ce morceau de code à me donner plus de contrôle sur l'animation:

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

Ce code cependant, ne fonctionne pas avec TTNavigator. Est-ce que quelqu'un sait comment je peux obtenir mes propres animations personnalisées pour travailler avec TTNavigator? Ou si je fais quelque chose de mal dans mon code?

Répondre

6

Il s'avère que j'ai répondu à ma propre question, mais plutôt que d'utiliser cette dernière ligne de code pour définir l'animation sur le navigationController, j'essayais de définir la transition vers l'URLAction. Une fois que j'ai remis cette ligne et j'ai mis en commentaire le code de transition URLAction, cela semble fonctionner!

// 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]; 

Espérons que cela aidera quelqu'un d'autre dans le futur!

1

Vous pouvez facilement ajouter à feuilles mobiles ou tout autre type d'animation sur TTNavigator en utilisant TTLauncherView comme suit:

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

Cela rend la transition animée d'utilisation de TTNavigator tout en affichant une nouvelle URL.