3 votes

Espacement supplémentaire dans NavigationBarTitle dans SwiftUI

J'ai une vue détaillée qui s'affiche avec une quantité absurde d'espacement et je n'arrive pas à comprendre pourquoi.

    struct MessageDetailView : View {
    var friend: Friend
    var body: some View {
        NavigationView {
            List {
                ForEach(0..<friend.messages.count) { message in
                    Text(self.friend.messages[message])
                        .modifier(textBubbleModifier())
                }
                }.navigationBarTitle(
                    Text(self.friend.name))
        }
    }
}

La structure de l'ami est assez simple :

struct Friend: Identifiable {
    var id = UUID()
    var name: String = ""
    var messages: [String] = [""]
}

let friends: [Friend] = [
    Friend(name: "Mark Zuckerberg", messages: ["Let's keep things private between you and I, shall we?", "I can keep a secret", "I definitely won't sell all your data"])

Vous trouverez ci-joint deux images. L'une provient du simulateur avec l'espacement erroné et l'autre de la vue en canevas, sans espacement. Avez-vous des idées ? Il se peut que ce soit simplement un bug de Xcode.

Look du simulateur Vue de la toile

2voto

MohammadRF Points 1458

Le canevas ne sait pas que la vue peut être poussée vers une NavigationView ou non et s'affiche correctement. Mais en cours d'exécution, elle est poussée et vous utilisez une NavigationView ainsi que dans votre vue détaillée. Essayez de déballer votre contenu à partir du NavigationView dans le corps de la vue détaillée. Ainsi, cela ressemblera au code ci-dessous :

var body: some View {
  List {
    ForEach(0..<friend.messages.count) { message in
      Text(self.friend.messages[message])
        .modifier(textBubbleModifier())
    }
    }.navigationBarTitle(
      Text(self.friend.name))
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X