2016-12-15 138 views
1

我想隱藏時將動畫添加到我的tabBarController。我能夠通過使用self.navigationController?.isNavigationBarHidden = true來完成navigationBarController的這種效果。我可以通過使用self.tabBarController?.tabBar.isHidden = true來隱藏tabBar,但我沒有看到動畫,我怎麼能這樣做,謝謝你提前。Swift UITabBarController隱藏動畫

回答

8

你可以改變標籤欄的動畫內部框架,所以像:

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! 
    }) 
} 

這臺標籤欄下方可見屏幕,使其從底部向上/向下滑動。

-1

您必須添加UIViewtransitionWithView類FUNC

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

這不是斯威夫特3標準。 「隱藏」不存在了。 –

+1

固定爲swift 3 –

0

在情況下,如果你需要從隱藏其切換爲可見,反之亦然:

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 
    } 
}