首页 > 解决方案 > 自定义 UITabBarController 内部的导航视图格式

问题描述

我创建了一个自定义的 UITabBarController 来避免 SwiftUI 的标签栏的一些不足。在这里查看更多。这是我实现它的地方:

import SwiftUI

struct HomeView: View {

    @EnvironmentObject var appState: AppState

    var body: some View {


            UITabBarWrapper([
                TabBarElement(tabBarElementItem:
                    TabBarElementItem(title: "Learn", systemImageName: "book")) {
                        NewsView()
                },


                TabBarElement(tabBarElementItem:
                    TabBarElementItem(title: "Matches", systemImageName: "heart")) {

                        MatchesTab().environmentObject(AppState())

                },

                TabBarElement(tabBarElementItem:
                    TabBarElementItem(title: "Account", systemImageName: "person")) {
                        ProfileView()
                }


            ])
            .frame(maxHeight: .infinity)
            .edgesIgnoringSafeArea(.top)
    }
}

MatchesTab()是一个NavigationView

import SwiftUI

struct MatchesTab: View {

    @EnvironmentObject var appState: AppState

    @State private var showingCandidate = false

    var body: some View {
        NavigationView {
            if self.appState.hasTakenQuiz {
                MatchesTabDefaultView()
                    .transition(.opacity)
                    .animation(.default)

            } else {
                SplashView()

            }
        }
    }
}

由于某种原因,这个灰色空间出现在嵌入的下面MatchesTab

在此处输入图像描述

另一件需要注意的事情:问题似乎与NavigationView. 删除后,灰色条消失

它似乎源于UINavigationController在此处输入图像描述

标签: swiftuikitswiftuibottomnavigationviewuitabview

解决方案


我可以告诉你如何自己回答这个问题......

要弄清楚那个灰色区域是什么,只需点击它(在模拟器上,或者如果您从 Xcode 在其上运行应用程序,则在您的设备上),翻转到 Xcode...

打开调试器 从顶部菜单中选择 Debug/View Debugging/Capture View Hierarchy

右键单击该字段(应该很容易找到,因为您刚刚选择了它)

选择“在调试导航器中显示”

在导航器中显示

现在您可以单击左侧的任何内容以了解更多信息... 左边调试


推荐阅读