我试图hidesBarsOnTap用选项卡栏模仿UINavigationController的新功能。我已经看到了很多答案,它们要么指向hidesBottomBarWhenPushed在viewController上设置,仅将其完全隐藏而不是在点击时隐藏。
hidesBarsOnTap
hidesBottomBarWhenPushed
@IBAction func tapped(sender: AnyObject) { // what goes here to show/hide the tabBar ??? }
提前致谢
编辑:根据下面我的建议
self.tabBarController?.tabBar.hidden = true
实际上确实隐藏了tabBar(在点击时切换true / false),但是没有动画。我将作为一个单独的问题提出。
经过大量的探索并尝试了各种方法来使用Swift优雅地隐藏/显示UITabBar,我得以danh采纳了这个出色的解决方案并将其转换为Swift:
func setTabBarVisible(visible: Bool, animated: Bool) { //* This cannot be called before viewDidLayoutSubviews(), because the frame is not set before this time // bail if the current state matches the desired state if (tabBarIsVisible() == visible) { return } // get a frame calculation ready let frame = self.tabBarController?.tabBar.frame let height = frame?.size.height let offsetY = (visible ? -height! : height) // zero duration means no animation let duration: TimeInterval = (animated ? 0.3 : 0.0) // animate the tabBar if frame != nil { UIView.animate(withDuration: duration) { self.tabBarController?.tabBar.frame = frame!.offsetBy(dx: 0, dy: offsetY!) return } } } func tabBarIsVisible() -> Bool { return (self.tabBarController?.tabBar.frame.origin.y)! < self.view.frame.maxY } // Call the function from tap gesture recognizer added to your view (or button) @IBAction func tapped(_ sender: Any?) { setTabBarVisible(visible: !tabBarIsVisible(), animated: true) }