You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何隐藏自定义TabBar?

如何隐藏自定义TabBar?

嗨,我看你遇到了自定义TabBar隐藏的问题,其实核心原因很简单——你现在只隐藏了系统原生的tabBar,但你自己创建的tabBarView是独立添加到视图层级里的子视图,系统的isHidden方法根本管不到它哦😉

给你几个简单的解决办法,一步步来:

1. 给自定义TabBar控制器加个统一控制方法

在你的TabBarViewController类里,新增一个专门用来控制自定义TabBar显示/隐藏的方法,这样不管哪个页面调用都很方便:

func setCustomTabBarHidden(_ hidden: Bool, animated: Bool = false) {
    // 同步隐藏系统原生tabBar和自定义tabBarView
    self.tabBar.isHidden = hidden
    
    // 可选:加上动画让隐藏/显示更丝滑
    let alphaValue: CGFloat = hidden ? 0 : 1
    if animated {
        UIView.animate(withDuration: 0.3) {
            self.tabBarView.alpha = alphaValue
            self.tabBarView.isHidden = hidden
        }
    } else {
        self.tabBarView.isHidden = hidden
        self.tabBarView.alpha = alphaValue
    }
}

2. 在需要隐藏的页面调用这个方法

以后你再想隐藏TabBar的时候,别直接操作系统tabBar了,改成调用上面的自定义方法:

// 先判断并强转成你的自定义TabBarViewController
if let customTabBarVC = self.tabBarController as? TabBarViewController {
    customTabBarVC.setCustomTabBarHidden(true, animated: true)
}

3. 可选:切换Tab时自动恢复显示

如果你希望从隐藏TabBar的页面切回其他Tab时,TabBar能自动显示回来,可以在TabBarViewControllertabBar(_:didSelect:)方法里加一句:

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    // 这里保留你原来的逻辑...
    
    // 切Tab时恢复TabBar显示
    setCustomTabBarHidden(false)
}

最后补个小知识点:你创建的tabBarView是直接添加到TabBarViewControllerview上的,和系统自带的tabBar是同级的子视图,两者没有关联关系,所以你只改系统tabBar的isHidden,自定义的那个自然不会跟着变啦。

备注:内容来源于stack exchange,提问作者User

火山引擎 最新活动