2017-08-29 1 views
0

Ok, j'ai regardé à travers https://developer.apple.com/videos/play/wwdc2013/218/ et SO questions essayant de même de faire des transitions personnalisées avec un contrôleur de barre d'onglets et ses viewcontrollers, mais je cours dans la confusion après avoir déterminé les principales étapes ici.Swift: Problèmes avec UIView.transition personnalisée?

J'ai besoin de savoir comment (ce qui signifie que le code exemple serait vraiment utile) pour appeler un UIView.transition personnalisé ou simplement avoir un option personnalisé dans UIView.transition. J'ai besoin de l'utiliser pour faire une transition glisser/modale -mimicking entre les onglets dans mon contrôleur de barre d'onglets.

La seule façon que je peux obtenir une transition arriver est d'utiliser la fonction ci-dessous (ce qui les rend dissoudre):

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 

      if selectedViewController == nil || viewController == selectedViewController { 
       return false 
      } 

      let fromView = selectedViewController!.view 
      let toView = viewController.view 

      UIView.transition(from: fromView!, to: toView!, duration: 0.3, options: [.transitionCrossDissolve], completion: nil) 

      return true 
     } 

Et d'appeler manuellement ici où je chnage programme le *selectedIndex* pour mon contrôleur onglet:

//SWITCHES BUTTON ------------------------------------------- 
    func switchTab(index: Int) 

    { 
     //transition 
     self.tabBarController(self, shouldSelect: (viewControllers?[index])!) 

J'ai lu et essayé de faire une classe personnalisée UIViewControllerAnimatedTransitioning mais je ne sais pas comment cela cadrerait programme ici -

mes tentatives en transmettant mon contrôleur de barre d'onglets et les toView et fromView dans la classe personnalisée aboutissent à ce que rien ne se passe/n'anime. C'est pourquoi j'ai eu recours à UIView.transition ici.

Comment puis-je faire un UIView.transition personnalisé? Que puis-je faire ici?

Répondre

0

Vous devez être conforme à UITabBarControllerDelegate et créer une classe customTransition et le transmettre comme suit:

func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? { 
     let animator = TabAnimationManager() 
     return animator 

    } 

et la classe TabAnimationManager devrait être une sous-classe de UIPercentDrivenInteractiveTransition et sont conformes protocole UIViewControllerAnimatedTransitioning. Vous pouvez ajouter vos animations personnalisées dans cette classe.