2016-12-15 15 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

スイフト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 
    } 
} 
関連する問題