Swift UITabBarController隐藏动画

问题描述:

我想隐藏时将动画添加到我的tabBarController。我能够通过使用self.navigationController?.isNavigationBarHidden = true来完成navigationBarController的这种效果。我可以通过使用self.tabBarController?.tabBar.isHidden = true来隐藏tabBar,但我没有看到动画,我怎么能这样做,谢谢你提前。Swift UITabBarController隐藏动画

你可以改变标签栏的动画内部框架,所以像:

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

这台标签栏下方可见屏幕,使其从底部向上/向下滑动。

您必须添加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 –

在情况下,如果你需要从隐藏其切换为可见,反之亦然:

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