L'inversion de la Coutume Enchaîner avec l'écriture de scénarii
J'ai un custom séquence d'animation qui se produit lorsque l'on pousse un nouveau point de vue contrôleur sur la pile. Quand popping la-vue-contrôleur qui a été présenté avec dit personnalisée segue, cependant, la navigation par défaut du contrôleur de l'animation qui se passe (qui est, le point de vue actuel du contrôleur de l'anime, à droite, tandis que le parent-vue-contrôleur se traduit à l'écran à partir du bord gauche).
Donc ma question est la suivante: est-il un moyen d'écrire un personnalisé pop séquence d'animation qui se produit lors de l'affichage d'une vue contrôleur hors de la pile?
Modifier (solution):
J'ai fini par la définition d'un personnalisé segue similaire à la réponse choisie. Dans le Storyboard, j'ai traîné une coutume des enchaînements de l'enfant-vue-contrôleur de retour à son parent, lui a donné un identificateur et le nouvellement écrit inverse segue que sa classe. Oui, je me rends compte qu'il est pratiquement identique à un modal de transition. Les exigences du Client nécessitait cette folie, donc avant tout les commentaires, de comprendre que je sais que l'on ne devrait pas avoir à le faire dans des circonstances normales.
- (void)perform {
UIViewController *src = (UIViewController *)self.sourceViewController;
UIViewController *dest = (UIViewController *)self.destinationViewController;
[UIView animateWithDuration:0.3 animations:^{
CGRect f = src.view.frame;
f.origin.y = f.size.height;
src.view.frame = f;
} completion:^(BOOL finished){
src.view.alpha = 0;
[src.navigationController popViewControllerAnimated:NO];
}];
}
En utilisant une séquence en boucle sur elle-même, n'êtes-vous pas encore la création d'une autre instance de la vue d'origine contrôleur inutilement? Je suppose que personne ne le remarquerait, sauf pour un bref soubresaut dans un profil de la mémoire. 🙂
OriginalL'auteur Jacob | 2012-02-16
Vous devez vous connecter pour publier un commentaire.
Oui. Voici un exemple où je pop de haut niveau. Lors de la création de la séquence dans le Storyboard. Utilisation sélectionnez ou entrez la nouvelle séquence de classe dans les attributs de l'inspecteur.
et
Si vous souhaitez pop up juste un changement au niveau de l'utilisation de cette coutume segue:
et
@fin
Cela crée/libère une nouvelle destination-vue-contrôleur inutilement. Il serait préférable de ne pas utiliser un Segue et, au lieu juste de la pop la-vue-contrôleur. Oui, je suis d'accord avec Apple devrait inclure le support pour un pop segue.
J'ai aimé la solution pour PopToRoot, mais l'un pour pop un seul point de vue...pas beaucoup. J'ai ajouté un petit quelque chose lorsque vous avez besoin de revenir en arrière l'un à l'animation existe encore: - (void) effectuer { UIViewController *src = (UIViewController *) auto.sourceViewController; [UIView transitionWithView:src.navigationController.durée:0.5 options:UIViewAnimationOptionTransitionCrossdissolve animations:^{ [src.navigationController popViewControllerAnimated:N]; } achèvement:NULL]; }
OriginalL'auteur T.J.
Pour quiconque suit cette maintenant, iOS 7 vous permet d'animer de deux façons:
Définir la séquence de Pousser, puis voir le code ci-dessous pour une poussée de la mise en œuvre.
https://github.com/Dzamir/OldStyleNavigationControllerAnimatedTransition
OriginalL'auteur Matt
Que l'intervenant Linus l'a souligné, les autres solutions présentées permettra de créer une autre instance de la UIViewController. Je pense que ce lien ici, décrire d'autres alternatives permettant d'inverser segue animations.
http://robsprogramknowledge.blogspot.com/2012/05/back-segues.html
OriginalL'auteur Shiun