SwiftUI NavigationView дополнительное пространство в нижней части экрана - PullRequest
1 голос
/ 26 апреля 2020

Я новичок в Swift и пытаюсь создать простой экран с NavigationView в SwiftUI. По какой-то причине это добавляет дополнительное пространство внизу, когда я оборачиваю что-либо внутри NavigationView. Я хотел посмотреть, сталкивается ли кто-то еще с этой проблемой.

Вот мой HomeView:

struct HomeView: View {
    var body: some View {
        NavigationView {
                ZStack {
                    Color.surface.edgesIgnoringSafeArea(.all)
                    Text("HOME")
                }
        }
    }
}

Вот мой ContentView с TabView:

struct ContentView: View {
    @EnvironmentObject var session: SessionStore
    @State private var selected = 1
    @State private var loaded: Bool = false

    var ref: DatabaseReference! = Database.database().reference()

    func getUser() {
        //Promisify this
        session.listen()
        self.loaded = true
        // Firebase test
        self.ref.child("users").child("test").setValue(["username" : "TEST"])
    }


    // Sets the bottom tab background color
    init(){
        UITabBar.appearance().isTranslucent = false
        UITabBar.appearance().barTintColor = UIColor(named: "card2")
    }

    var body: some View {
        Group {
            if (self.loaded == false){
                Text("loading...")
            }

            else if (session.session != nil) {
                TabView(selection: $selected) {
                    HomeView()
                        .tabItem {
                            Image(systemName: "music.house.fill")
                            Text("Home")
                        }

                    MyRoutinesView()
                        .tabItem({
                            Image(systemName: "music.note.list")
                            Text("My Routines")
                        }).tag(1)

                    MetronomeView()
                        .tabItem({
                            Image(systemName: "music.note")
                            Text("Tools")
                        }).tag(2)

                    SettingsView()
                        .tabItem({
                            Image(systemName: "gear")
                            Text("Settings")
                        }).tag(3)

                }
                //.background(Color.surface)
                .accentColor(Color.white)
                //.font(.headline)
            } else if (self.loaded == true && session.session == nil) {
                AuthView()
            }
        }.onAppear(perform: getUser)
    }
}

// Gets colors from assets
extension Color {
    static let primary = Color("primary")
    static let secondary = Color("secondary")
    static let surface = Color("surface")
    static let card = Color("card")
    static let cardShadow = Color("cardShadow")
    static let card2 = Color("card2")
}

И Вот как это выглядит в настоящее время (проблема в том, что пространство находится над навигацией по вкладкам):

Домашний вид

Заранее спасибо за любую помощь, которую вы все можете в состоянии предоставить!

1 Ответ

1 голос
/ 26 апреля 2020

Разобрался!

в моем init () у меня была эта строка кода, которая создавала нечто, похожее на другую панель вкладок. Не уверен, почему ему не понравился этот код, но все в порядке со следующей строкой:

UITabBar.appearance().isTranslucent = false

Спасибо, ребята! Я провел всю прошлую ночь и этим утром, получая этот ха-ха, всего пару недель, чтобы быстро освоиться в React Native.

...