iOS 7 changement pushviewcontroller animation de direction
Quand je pousse un viewcontroller l'animation est toujours de la droite vers la gauche. Je veux changer d'animation à l'inverse de la gauche vers la droite.
J'ai essayé ce code mais il ne marche pas. L'animation est toujours de la droite vers la gauche. Comment puis-je obtenir simplement et correctement? Besoin d'aide s'il vous plaît. Merci à l'avance.
//NOT WORKING
myViewController *mController = [self.storyboard instantiateViewControllerWithIdentifier:@"myViewController"];
CATransition *transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
[self.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:mController animated:YES];
- Essayez de faire cela :
[self.view.window.layer addAnimation:transition forKey:nil];
au lieu de :[self.view.layer addAnimation:transition forKey:nil];
Vous devez vous connecter pour publier un commentaire.
Vous sont effectivement en train de faire, mais pour autant que je comprends de votre code, vous n'êtes pas en substitution de la méthode:
Donc, vous avez besoin d'hériter de
UINavigationController
et de redéfinir la méthode ci-dessus.Voici comment je le fais (push + pop):
Push:
Pop :
Depuis que cette question mentionne iOS 7 je suis assez surpris que la réponse ne mentionne pas les Transitions Animées API introduites dans iOS 7.
Si vous voulez aller directement dans GitHub l'objc.io les gars ont un grand poste avec un projet lié ici
Prendre un coup d'oeil à la documentation et vous verrez ce qui suit:
Ou en Objective-C
Ce que cela signifie, c'est que depuis iOS 7, vous pouvez contrôler la façon dont la manette de navigation met en œuvre ses animations pour la pousse et de la pop.
Tout ce qui est nécessaire est pour vous de mettre le délégué de la manette de navigation et vendre le bon animateur de l'objet le cas échéant. Permet donc de commencer:
1. Définir la UINavigationControllerDelegate
En général, je voudrais avoir une Application de Navigation dans le Coordinateur qui gère toutes mes transitions etc. Donc, idéalement, vous voulez un objet qui sera actif pour la durée de la NavigationController. Donc, nous pourrions avoir un coordonnateur qui ressemble à ceci:
En général, je créer ce dans l'App Délégué de sorte qu'il peut être référencés. Vous pouvez aussi définir le délégué par la vue du contrôleur de base, la création d'une coutume UINavigationController sous-classe, ou partout où vous voyez l'ajustement.
2. Créer Un Animateur
Maintenant nous avons besoin d'un objet qui est conforme à la
UIViewControllerAnimatedTransitioning
protocole. Cet objet sera appelé à appliquer l'animation à chaque fois qu'une animation de transition est nécessaire. Cet exemple est une animation simple qui se fane et se dilate à la fromView dans la transition de sorte que ses pertinente pour un Push.3. Vendre L'Animateur, Le Cas Échéant
Maintenant nous avons besoin pour mettre en œuvre les UINavigationController délégué et vendre notre animateur en cas de besoin.
Et là vous allez, vous avez maintenant un contrôle total sur votre UINavigationController transitions
required init
avoir unUINavigationController
objet. Mais l'AppDelegate lui-même n'a pas unUINavigationController
objet. Ne vous venez de déclarer l'instance, puis l'initialiser par capital de risque et de définir l'individu en Vue du Contrôleur deUINavigationController
objet?UIViewController
manette de navigation sur l'objet à travers de dans l'App Délégué par la vue du contrôleur de base. En raison de la table de montage séquentiel. Il fonctionne de toute façon.. Merci!Essayer de code ci-Dessus
Vous pouvez l'essayer aussi bien.
Si quelqu'un est à la recherche pour la même réponse dans les Xamarin.iOS (basé sur gran33 réponse) :
En supposant
myViewController
est votre point de vue contrôleur,Pour Swift 4.0+
1 - Créer une extension:
2 - Composez le: