更改选项卡式视图 SwiftUI 的凹槽区域背景颜色

Posted

技术标签:

【中文标题】更改选项卡式视图 SwiftUI 的凹槽区域背景颜色【英文标题】:Changing Notch Area Background Color of Tabbed View SwiftUI 【发布时间】:2020-02-03 23:40:36 【问题描述】:

我想在我正在制作原型的应用程序中覆盖默认的暗模式颜色,但我在使用选项卡视图时无法更改凹口的颜色。当我通过以下代码使用没有 TabView 的导航视图时,它可以正常工作:

NavigationView 
            ZStack 
                Color(.gray).edgesIgnoringSafeArea(.all)
                VStack 
                    Text("Test")
                
            .navigationBarTitle("Nav bar")
        

这会产生以下结果:

但是,一旦我将它嵌入到 TabView 中,就会发生以下情况:

我可以看到这是因为托管视图控制器具有黑色背景色,但是我找不到更改此颜色的方法。这是它在视图调试器中的样子:

有人知道有没有办法改变它的颜色?必须有一种方法可以覆盖默认的暗模式颜色。也许我的方法不对?

【问题讨论】:

出于好奇,为什么要设置这个?缺口所覆盖的屏幕区域对用户来说是完全不可见的——用户只有在截屏或在应用程序切换器屏幕中才能看到它。 我所说的缺口是指缺口耳朵,正如您在第二个屏幕截图中看到的那样,它在选项卡视图中变黑。许多应用程序确实有自定义的缺口颜色。例如,如果您打开 trello 应用程序,缺口是他们的品牌蓝色,并且他们正在使用标签栏。 Youtube 还具有延伸到凹槽区域的自定义深色模式颜色。 Netflix 甚至设法让图像滚动视图进入缺口。一定有办法做到这一点。 也许这个so answer可以帮助你。 【参考方案1】:

只需更改视图的顺序,如下所示

 ZStack 
    Color.gray.edgesIgnoringSafeArea(.all)
    TabView(selection: $selection) 
       // ... tabs here
    
 

【讨论】:

以上是关于更改选项卡式视图 SwiftUI 的凹槽区域背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 在 NavigationLink 中更改后退按钮的颜色

为啥这段代码在运行时会崩溃?它只是选项卡式视图中 SwiftUI 中的选择器

Kivy 选项卡式面板不会更改背景颜色

在选项卡式应用程序的导航视图中为表格添加背景图像

我有一个选项卡式视图,如何触发视图运行一些代码,视图由选项卡式视图激活?

在 SwiftUI 上更改颜色视图