Проблемы с макетом SwiftUI NavigationView - PullRequest
1 голос
/ 09 июля 2020

Мои NavigationView и Title при использовании SwiftUI никогда не появляются там, где я ожидал бы их появления, при запуске на устройстве или симуляторе. Я хочу, чтобы они были в значительной степени под кнопкой «Назад», которая находится вверху слева, но при запуске на устройстве или симуляторе она уходит довольно далеко вниз по странице, вот скриншот моего симулятора с измененным размером рядом с предварительным просмотром, и вы можете увидеть, насколько это отличается .

Навигация выглядит не так, как ожидалось

Вот мой код:

import SwiftUI

struct DetailView: View {
    let tarot: Tarot
    var body: some View {
        NavigationView {
            VStack() {
                Image(tarot.tarotImage)
                    .resizable()
                    .aspectRatio(contentMode: .fill)
                    .frame(width: 200, height: 200)
                    .padding(.init(top: 80, leading: 30, bottom: 80, trailing: 30))
                Text(tarot.tarotDescription)
                    .padding(.horizontal)
            }
            .navigationBarTitle(tarot.tarotName, displayMode: .automatic)
        }
    }
}

struct DetailView_Previews: PreviewProvider {
    static var previews: some View {
        DetailView(tarot: cardsArray[0])
    }
}

1 Ответ

2 голосов
/ 10 июля 2020

У вас не должно быть более одного NavigationView в стеке навигации.

Попробуйте удалить NavigationView из DetailView:

struct DetailView: View {
    let tarot: Tarot
    var body: some View {
        VStack {
            Image(tarot.tarotImage)
                .resizable()
                .aspectRatio(contentMode: .fill)
                .frame(width: 200, height: 200)
                .padding(.init(top: 80, leading: 30, bottom: 80, trailing: 30))
            Text(tarot.tarotDescription)
                .padding(.horizontal)
        }
        .navigationBarTitle(tarot.tarotName, displayMode: .automatic)
    }
}
...