如何隐藏自定义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能自动显示回来,可以在TabBarViewController的tabBar(_:didSelect:)方法里加一句:
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { // 这里保留你原来的逻辑... // 切Tab时恢复TabBar显示 setCustomTabBarHidden(false) }
最后补个小知识点:你创建的tabBarView是直接添加到TabBarViewController的view上的,和系统自带的tabBar是同级的子视图,两者没有关联关系,所以你只改系统tabBar的isHidden,自定义的那个自然不会跟着变啦。
备注:内容来源于stack exchange,提问作者User




