【问题标题】:When the UITabbar is Translucent and the UIViewController is not extended behind the tabbar, the uitabbar seems like covering a black view当 UITabbar 为 Translucent 且 UIViewController 未在 tabbar 后面扩展时,uitabbar 似乎覆盖了一个黑色视图
【发布时间】:2026-01-21 17:15:02
【问题描述】:

第一个视图中的标签栏是我想要的。因为第二个视图不是滚动视图,所以我无法使用self.edgesForExtendedLayout = UIRectEdge.Bottom 将其扩展到底部。

看起来无法接受。

而且我不想将 uitabbar 的 Translucent 设置为 false,这并不花哨。

我尝试了另一种方式: [[UITabBar appearance] setBarTintColor: [UIColor whiteColor]];

它不起作用。为了使它看起来更清晰,我将颜色更改为红色。并且最后一个 tabbar 看起来也覆盖了一些黑色视图。

【问题讨论】:

  • 请看下面我的回答,它解决了问题。

标签: ios swift uitabbar


【解决方案1】:

考虑到tabbar是半透明的,UITabbar视图下的视图是什么?

这是为什么在更改条形图的 tintcolor 时它不起作用的最终答案。因为UITabbar视图下的视图是黑色的。

感谢 Xcode 超棒的调试功能。我们可以很容易地找到UITabbar视图下的视图。

它是 UIWindow。所以解决办法就是简单的把窗口的backgroundColor改成白色。

【讨论】:

  • 我不是母语人士,欢迎用英语什么的来说明我的缺点。
【解决方案2】:

我会说在您的 viewController 的 viewDidLoad 中添加此代码将解决您的问题:

    edgesForExtendedLayout = .all
    extendedLayoutIncludesOpaqueBars = true

另外,您可以保持您的 tabBar 半透明而不设置任何背景颜色。

【讨论】:

  • 这行代码与问题所在无关。目的是做应用程序要求的其他事情。不需要,这会导致问题。