在IOS swift app中隐藏标签栏

时间:2015-02-28 03:59:07

标签: ios swift

我正在试图弄清楚如何隐藏iOS swift应用中的标签栏。我不关心任何花哨的动画或任何东西。我可以把它放在ViewDidLoad()函数中。

9 个答案:

答案 0 :(得分:157)

您可以在ViewDidLoad()方法中使用此功能。

self.tabBarController?.tabBar.hidden = true

对于Swift 3.0,4.0, 5.0

self.tabBarController?.tabBar.isHidden = true

或者您可以通过以下方式更改标签栏的z位置:

self.tabBarController?.tabBar.layer.zPosition = -1

如果你想再次展示它,那么:

self.tabBarController?.tabBar.layer.zPosition = 0

答案 1 :(得分:104)

接受的答案有效,但转换到其他视图时会出现与标签栏相关的不连贯动画。

还想添加虽然Kalpesh的解决方案对我来说非常合适,但我发现每个视图控制器都有hidesBottomBarWhenPushed的属性(查看故事板。)如果你想隐藏标签栏,你应该勾选在那。它会很棒。

enter image description here

更新:我不确定这是否是一个已知的东西,但这里是苹果文档页面所说的:

  

A view controller added as a child of a navigation controller can display an optional toolbar at the bottom of the screen. The value of this property on the topmost view controller determines whether the toolbar is visible. If the value of this property is true, the toolbar is hidden. If the value of this property is false, the bar is visible.

我认为这意味着您必须在最顶层的视图控制器(导航堆栈中的第一个)上设置hidesBottomBarWhenPushed的基本值。一旦将其设置为true,您可以将其更改为false或true为另一个在堆栈上的viewcontrollers。但是,如果您的最顶层视图控制器的hidesBottomBarWhenPushed值为false,则它不会显示导航堆栈上其他控制器的标签栏。

答案 2 :(得分:61)

  

在推送之前设置controller.hidesBottomBarWhenPushed = true

let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)

答案 3 :(得分:24)

无需设置tabBar的isHidden属性。

简单地说,转到ViewController(在StoryBoard中) - >属性检查器 - >在' View Controller'部分选择'隐藏推杆底部栏'复选框。这就像一个魅力。

如果你去了隐藏的'您需要进行大量处理的方式,即在您返回时再次显示它,并在隐藏tabBar后删除底部空白区域。

答案 4 :(得分:2)

斯威夫特3。

self.tabBarController?.tabBar.isHidden = true

答案 5 :(得分:1)

您也可以将其设置为扩展名(使用Dharmesh Kheni答案)

extension UITabBar {
func tabsVisiblty(_ isVisiblty: Bool = true){
    if isVisiblty {
        self.isHidden = false
        self.layer.zPosition = 0
    } else {
        self.isHidden = true
        self.layer.zPosition = -1
    }
}

答案 6 :(得分:0)

This is the way programmatically for Swift 4.0, 4.1, 4.2, 5.0 and later >:

tabBarController?.hidesBottomBarWhenPushed = true

or

hidesBottomBarWhenPushed = true

答案 7 :(得分:0)

要隐藏navigationBar和tabBar,请使用下一个功能:

Name    Ranking
test1  | 1
test2  | 2
test3  | 3
test4  | 4
...

当屏幕方向改变时,tabBar的高度也改变,所以我使用下一个函数退出全屏以调整高度:

var tabBarHeight : CGFloat!

func fullScreenAction(){
    if navigationController?.isNavigationBarHidden ?? false {
        //Show navigationBar
        navigationController?.setNavigationBarHidden(false, animated: false)

        //Show tabBar
        tabBarController?.tabBar.isHidden = false
        //Update the height of tabBar
        if (!(tabBarController?.tabBar.frame.size.height.isEqual(to: 0))!) {
            tabBarHeight = self.tabBarController?.tabBar.frame.size.height
        }
        tabBarController?.tabBar.frame.size.height   = tabBarHeight
    } else {
        //Hide navigationBar
        navigationController?.setNavigationBarHidden(true, animated: false)

        //Hide tabBar
        tabBarController?.tabBar.isHidden = true
        //Update the height of tabBar
        tabBarHeight = tabBarController?.tabBar.frame.size.height
        tabBarController?.tabBar.frame.size.height   = 0

    }

}

我希望它对您有用。

答案 8 :(得分:0)

这是我的代码。这只是为了隐藏它的标签栏。 (如果没有很好地建立框架,底部将出现黑色视图。)

var oldTabbarFr: CGRect = .zero

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    oldTabbarFr = self.tabBarController?.tabBar.frame ?? .zero
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.tabBar.isHidden = true
    self.tabBarController?.tabBar.frame = .zero
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.tabBarController?.tabBar.isHidden = false
    self.tabBarController?.tabBar.frame = oldTabbarFr
}