2016-12-15 4 views
1

Ich versuche, eine Animation zu meinem TabBarController hinzufügen, wenn ausgeblendet. Ich kann diesen Effekt mit der navigationBarController unter Verwendung self.navigationController?.isNavigationBarHidden = true erreichen. Ich bin in der Lage, die Registerkarte unter Verwendung von self.tabBarController?.tabBar.isHidden = true zu verstecken, aber ich bekomme die Animation nicht, wie kann ich das tun, danke im Voraus.Swift UITabBarController ausblenden mit Animation

Antwort

8

Sie könnten der Tab-Leiste des Rahmens innerhalb einer Animation ändern, so etwas wie hinzufügen:

func hideTabBar() { 
    var frame = self.tabBarController?.tabBar.frame 
    frame?.origin.y = self.view.frame.size.height + (frame?.size.height)! 
    UIView.animate(withDuration: 0.5, animations: { 
     self.tabBarController?.tabBar.frame = frame! 
    }) 
} 

func showTabBar() { 
    var frame = self.tabBarController?.tabBar.frame 
    frame?.origin.y = self.view.frame.size.height - (frame?.size.height)! 
    UIView.animate(withDuration: 0.5, animations: { 
     self.tabBarController?.tabBar.frame = frame! 
    }) 
} 

, die die Tab-Leiste setzt gerade unterhalb des sichtbaren Bildschirm, so dass es von unten nach oben/unten gleitet.

-1

Sie haben UIViewtransitionWithView Klasse func

func hideTabBarWithAnimation() ->() { 
    UIView.transitionWithView(tableView, 
           duration: 1.0, 
           options: .TransitionCrossDissolve, 
           animations: 
     {() -> Void in 
      self.tabBarController?.tabBar.isHidden = true 
     }, 
           completion: nil); 
} 
+4

Es ist nicht Swift 3 kompatibel. "versteckt" existiert nicht mehr. –

+1

behoben zu swift 3 –

0

Im Fall, wenn Sie brauchen, um sichtbar und umge es von verstecken zu wechseln kehrt:

func toggleTabbar() { 
    guard var frame = tabBarController?.tabBar.frame else { return } 
    let hidden = frame.origin.y == view.frame.size.height 
    frame.origin.y = hidden ? view.frame.size.height - frame.size.height : view.frame.size.height 
    UIView.animate(withDuration: 0.3) { 
     self.tabBarController?.tabBar.frame = frame 
    } 
}