如何让UITabbar透明以显示父视图的背景图片?
解决UITabBar设置透明后仍显示黑色背景的问题
我之前也踩过这个坑!你调试发现的UIVisualEffectSubView和UIVisualEffectBackdropView就是UITabBar默认带的毛玻璃效果容器,直接设置背景色透明根本搞不定它们。给你几个Swift 4里靠谱的解决方案:
方案一:用系统原生API处理(推荐)
这是最稳妥、最优雅的方式,不用折腾子视图,直接通过UITabBar的属性就能彻底移除默认背景:
// 设置透明的空背景图,替换掉默认背景 tabBar.backgroundImage = UIImage() // 移除底部的阴影线 tabBar.shadowImage = UIImage() // 关闭半透明模式——这步是关键!开启半透明时系统会自动添加毛玻璃背景 tabBar.isTranslucent = false // 最后再明确设置背景色为透明 tabBar.backgroundColor = .clear
方案二:手动移除视觉效果子视图
如果方案一在你的特殊场景下不生效,可以直接遍历TabBar的子视图,把那些系统自带的视觉效果视图删掉:
// 遍历子视图,移除所有UIVisualEffectView类型的视图 tabBar.subviews.forEach { subview in if subview is UIVisualEffectView { subview.removeFromSuperview() } } // 设置背景色透明 tabBar.backgroundColor = .clear
⚠️ 注意:这个方法依赖系统视图层级结构,iOS版本更新可能会有变动,所以优先用方案一。
额外小提示
如果希望TabBar下面的页面内容能透上来,还要确保对应的ViewController设置了:
edgesForExtendedLayout = .all
这样操作后,你的UITabBar就能完全透明,不会再出现烦人的黑色背景啦!
内容的提问来源于stack exchange,提问作者amirtmgr
相关产品推荐
相关产品推荐

