Comment puis-je mettre en œuvre un glisser/glissement de l'animation entre les points de vue?
J'ai un peu de vues entre qui j'ai envie de glisser dans un iOS programme. Maintenant, je suis de glisser entre eux à l'aide d'un modal de style, avec un fondu enchaîné d'animation. Cependant, je veux avoir un glisser/glissement de l'animation comme vous voyez sur l'écran d'accueil, par exemple. Je n'ai aucune idée de comment le code d'une telle transition, et le style de l'animation n'est pas un modal style de transition. Quelqu'un peut-il me donner un exemple de code? Il n'a pas besoin d'être un modèle modal ou quoi que ce soit, j'ai juste trouvé que plus facile.
- Notez que vous pouvez utiliser trivialement iOS "pagination" - tutoriel Complet: stackoverflow.com/a/26024779/294884
- Si vous avez besoin d'une véritable transition personnalisée, tutoriel complet pour 2018 stackoverflow.com/a/48081504/294884
Vous devez vous connecter pour publier un commentaire.
Depuis iOS 7, si vous souhaitez animer la transition entre deux contrôleurs de vue, vous pouvez utiliser des transitions personnalisées, tel que discuté dans la WWDC 2013 vidéo Les Transitions Personnalisées À L'Aide De La Vue Des Contrôleurs. Par exemple, pour personnaliser la présentation d'un nouveau point de vue contrôleur de vous:
La destination view controller spécifier la
self.modalPresentationStyle
ettransitioningDelegate
pour la présentation de l'animation:Ce délégué (dans cet exemple, le point de vue du contrôleur lui-même) serait conforme à
UIViewControllerTransitioningDelegate
et à mettre en œuvre:Vous pouvez implémenter un animateur qui permettrait de réaliser l'animation recherchée:
Vous souhaitez également mettre en œuvre une présentation contrôleur qui prend soin de nettoyer le point de vue de la hiérarchie pour vous. Dans ce cas, puisque nous sommes complètement le recouvrement de la présentation de la vue, nous pouvons l'enlever de la hiérarchie lorsque la transition est faite:
Éventuellement, si vous voulais que ce geste interactif, vous aussi, vous avez:
Créer une interaction contrôleur (généralement un
UIPercentDrivenInteractiveTransition
);Votre
UIViewControllerAnimatedTransitioning
également de mettre en œuvreinteractionControllerForPresentation
, qui, évidemment, serait de rendre celle-ci interaction contrôleur;Avoir un geste (ou ce que vous avez) qui met à jour la
interactionController
Cela est décrit dans ce qui précède Les Transitions Personnalisées À L'Aide De La Vue Des Contrôleurs.
Par exemple de personnalisation de la navigation contrôleur push/pop, voir Manette de Navigation personnalisée animation de transition
Veuillez trouver ci-dessous une copie de ma réponse originale à cette question, qui date d'avant les transitions personnalisées.
@sooper la réponse est correcte, que CATransition peut donner l'effet que vous recherchez.
Mais, par ailleurs, si votre fond n'est pas blanc, le
kCATransitionPush
deCATransition
a une étrange fade in et fade out à la fin de la transition qui peut être gênant (lors de la navigation entre les images, surtout, il donne un peu d'effet scintillant). Si vous souffrez de cela, j'ai trouvé ce simple transition très gracieux: Vous pouvez préparer votre "vue suivante" pour être juste à côté de l'écran à droite, et puis d'animer le déplacement de la vue courante hors de l'écran vers la gauche pendant que vous simultanément animer la prochaine vue à déplacer à l'endroit où la vue actuelle a été. Remarque, dans mes exemples, je suis l'animation des sous-vues dans et hors de la vue principale au sein d'une seule vue-contrôleur, mais vous avez probablement l'idée:Clairement, vous auriez à le tordre pour la façon dont vous avez reçu vos commandes tout mettre en place, mais cela donne une très simple de transition, pas de décoloration ou quelque chose comme ça, juste une belle transition en douceur.
Une mise en garde: tout d'Abord, ni exemple, ni la
CATransition
exemple, sont tout à fait comme le Tremplin de l'écran d'accueil de l'animation (que vous avez parlé), qui est continue (c'est à dire si vous êtes à mi-chemin à travers un glissement de doigt, vous pouvez arrêter et revenir en arrière ou quoi que ce soit). Ces transitions sont ceux qui une fois de les initier, ils ont juste arriver. Si vous avez besoin que l'interaction en temps réel, qui peut être fait, aussi, mais c'est différent.Mise à jour:
Si vous souhaitez utiliser un geste continu qui permet de suivre le doigt de l'utilisateur vous pouvez utiliser
UIPanGestureRecognizer
plutôt queUISwipeGestureRecognizer
, et je pense queanimateWithDuration
est mieux queCATransition
dans ce cas. J'ai modifié monhandlePanGesture
pour changer leframe
coordonnées de coordonner avec les gestes de l'utilisateur, puis j'ai modifié le code ci-dessus pour remplir l'animation lorsque l'utilisateur se laisser aller. Fonctionne assez bien. Je ne pense pas que vous pouvez le faire avecCATransition
très facilement.Par exemple, vous pouvez créer un geste de gestionnaire sur le contrôleur principal de vue:
Et le gestionnaire pourrait ressembler à:
Qui utilise ces simples
frame
méthodes que vous feriez sans doute définir pour votre choix UX:Votre particulier la mise en œuvre est sans aucun doute différente, mais j'espère que cela illustre bien l'idée.
Avoir illustré tout cela (de compléter et de préciser cette vieille réponse), je dois préciser que je n'utilise pas cette technique, pas plus. Aujourd'hui, j'utilise généralement un
UIScrollView
(avec "d'échange") ou (iOS 6) unUIPageViewController
. Cela vous sort de l'entreprise de l'écriture de ce genre de geste gestionnaire (et de profiter de fonctionnalités supplémentaires comme les barres de défilement, de rebondir, etc.). Dans leUIScrollView
mise en œuvre, je viens de répondre à lascrollViewDidScroll
événement pour s'assurer que je suis paresseusement chargement de la nécessaire sous-vue.UIPageViewController
(iOS 6.0 et au-dessus, si vous voulez que le glissement de vues) ouUIScrollView
(dans laquelle vous vous tournez sur la pagination, et ensuite répondre à lascrollViewWillScroll
délégué méthode pour déterminer lequel des vues à ajouter des sous-vues. Ceux-ci sont bien des approches, car il vous fait sortir du processus de création de vos propres modules de reconnaissance de geste, vous obtenir des barres de défilement ou les compteurs de page et la comme.UIScrollView
pour profiter des effets de rebond et la comme. De toute façon, voir élargi la réponse ci-dessus.self.prevView
,self.nextView
, etc.Vous pouvez créer un
CATransition
animation. Voici un exemple de la façon dont vous pouvez faire glisser un second point de vue (à partir de la gauche) dans l'écran tout en poussant le courant de l'affichage:Si vous voulez la même page de défilement/balayage à effet de tremplin avoir lors du passage de la page, alors pourquoi ne pas utiliser un
UIScrollView
?Et ensuite utiliser
UIPageControl
pour obtenir ces points. 🙂