Swift 如何在按下视图控制器时修复半透明选项卡栏中的黑色背景

Swift 如何在按下视图控制器时修复半透明选项卡栏中的黑色背景,swift,controller,navigation,uitabbar,tabbar,Swift,Controller,Navigation,Uitabbar,Tabbar,我使用的半透明选项卡栏出现问题。我有一个UIAbbarController嵌入了一个UINavigationController,它的根是一个简单的UIViewController。正如我所说,标签栏是半透明的 当我尝试在导航控制器堆栈上推一个视图控制器时,转换在选项卡栏下被截断 转换完成后,在半透明选项卡栏下设置推送视图控制器的背景色(红色仅用于此示例) 是的,我可以将TabController视图的背景色设置为f.I.红色并覆盖黑色,但它仍然会被切碎 我发现了很多类似的问题,但通常解决方案

我使用的半透明选项卡栏出现问题。我有一个UIAbbarController嵌入了一个UINavigationController,它的根是一个简单的UIViewController。正如我所说,标签栏是半透明的

当我尝试在导航控制器堆栈上推一个视图控制器时,转换在选项卡栏下被截断

转换完成后,在半透明选项卡栏下设置推送视图控制器的背景色(红色仅用于此示例)

是的,我可以将TabController视图的背景色设置为f.I.红色并覆盖黑色,但它仍然会被切碎

我发现了很多类似的问题,但通常解决方案是“从故事板实例化”,但我不使用故事板,也没有找到任何有效的解决方案

代码没有什么特别之处,只是简单地推一下导航控制器

让diningDetailController=diningDetailController()
navigationController?.pushViewController(diningDetailController,动画:true)
DiningDetailController:

导入UIKit
类DiningDetailController:UIViewController{
重写func viewDidLoad(){
super.viewDidLoad()
view.backgroundColor=.red
}
}
你可以在附加的gif中看到它的实际外观,我认为你可以想象它应该如何表现。红色视图控制器应平滑地进入半透明条后面

如果没有半透明,它当然可以完美工作,因为你看不到那该死的酒吧后面有什么,但酒吧应该是半透明的


我希望你们中的任何人都知道这个问题的解决办法。提前谢谢

好的,我发现了问题。显然,这是一种缓存的构建,我真的不知道,但在gif中,您可以看到,表视图的底部约束被捕捉到视图的底部约束

为了便于尝试,我使用了“视图底部安全区域布局”指南,以便表视图的底部定位点捕捉到选项卡栏的顶部定位点。我构建了它,显然没有问题,因为视图不再位于选项卡栏后面

当我将约束改回使用
self.view.bottomAnchor
时,它再次起作用,原因我不知道。我三次检查了我的git状态,代码库中没有一个字符被更改


这可能是由某些缓存数据引起的吗?

黑色背景是您窗口的背景色,因此您可以尝试设置您的
UIApplication.sharedApplication.delegate.window.backgroundColor=Red

我刚刚尝试重现此问题,并进行了修改。能否尝试在其
ViewDidLoad
方法(
self.view.backgroundColor=.blue
)上设置DiningDetailController背景色?如果问题仍然存在,请告诉我们您的xCode版本、iOS版本和DiningDetailController代码,以便我们尝试重现该问题。我将viewDidLoad中的背景色设置为红色。仍在发生。Xcode版本是10.3,iOS 12.4.1。DiningDetailController只是将背景颜色设置为红色,但我可以用完整的代码更新问题。可能吧。新的生成系统存在一些缓存问题。您可以将旧版生成系统用作解决方案: