Панель навигации Режим отображения не работает идеально в SwiftUI - PullRequest
0 голосов
/ 03 марта 2020

Я использую SwiftUI с версией 11.3.1 (11C504).

Я реализую панель вкладок на экране, и этот экран появится после перехода с экрана входа в систему.

Если навигация displayMode - это .automatic, поэтому я показываю пробел (который граничит с черной линией на рисунке), когда я прокручиваю список вверх. В противном случае навигация заголовок шоу. И когда я установил displayMode, .inline, чтобы он работал идеально. И когда я запускаю проект столько раз, но иногда он работает идеально, а иногда показывает пробел.

Я упомянул пробел на рисунке с черной рамкой.

/ / ContentView

struct ContentView: View {

    var body: some View {
        HomeTabView()
    }
}

// HomeTabView

struct HomeTabView: View {

    @State private var selection = 0

    //Inclose user intraface of tab View.
    var body: some View {

        TabView(selection: $selection){

            TestListView().tabItem {
                Image(systemName: "book.fill")
                Text("Learn")
            }.tag(0)

            Text("Community").tabItem {
                Image(systemName: "globe")
                Text("Community")
            }.tag(1)

            //Add Notification List on the Screen.
            Text("Notification").tabItem {
                Image(systemName: "bell.fill")
                Text("Notification")

            }.tag(3)

            //Add Account  on the Tab Bar
            Text("Account").tabItem {
                Image(systemName: "person.circle.fill")
                Text("Account")
            }.tag(4)

        }.accentColor(.pink)

            .navigationBarTitle("SwiftUI")
    }

}

TestListView

struct TestListView: View {

    var body: some View {
            VStack{

                List(1...10, id: \.self){ num in
                    ListCards()
                }
              }.edgesIgnoringSafeArea(.all)
       }
}

// ListCards

struct ListCards: View {

    var body: some View {

        ZStack{
        RoundedRectangle(cornerRadius: 16)
                .frame(height: 180)
                .foregroundColor(.white)
                .shadow(radius: 5)

            VStack(alignment: .leading, spacing: 10){

                HStack(alignment: .top){

                    Rectangle()
                        .frame(width: 100, height: 100)
                        .cornerRadius(16)
                        .foregroundColor(.pink)

                    VStack(alignment: .leading, spacing: 4){
                        Text("SwiftUI")
                            .font(.title)

                        Text("Description of title")
                            .foregroundColor(.gray)
                    }
                }
                .padding()

            }.padding(.leading, 2)
        }.padding(.all, 6)
    }
}

enter image description here

1 Ответ

1 голос
/ 03 марта 2020

Вам необходимо изменить HomeTabView следующим образом:


var body: some View {

        TabView(selection: $selection) {
            NavigationView {
                TestListView()
                .navigationBarTitle("SWIFTUI")
            }.tabItem {
                Image(systemName: "book.fill")
                Text("Learn")
            }.tag(0)

            NavigationView {
                Text("Community")
            }.tabItem {
                Image(systemName: "globe")
                Text("Community")
            }.tag(1)

            //Add Notification List on the Screen.
            NavigationView {
                Text("Notification")
            }.tabItem {
                Image(systemName: "bell.fill")
                Text("Notification")

            }.tag(3)
            //Add Account  on the Tab Bar
            NavigationView {
                Text("Account")
            }.tabItem {
                Image(systemName: "person.circle.fill")
                Text("Account")
            }.tag(4)

        }.accentColor(.pink)

    }

также удалите .edgesIgnoringSafeArea(.all) из TestListView

...