web-dev-qa-db-fra.com

Faire un vstack remplir la largeur de l'écran de swiftui

Compte tenu de ce code:

import SwiftUI

struct ContentView : View {
    var body: some View {
        VStack(alignment: .leading) {
            Text("Title")
                .font(.title)

            Text("Content")
                .lineLimit(nil)
                .font(.body)

            Spacer()
        }
        .background(Color.red)
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

Il en résulte cette interace:

preview

Comment puis-je faire le VStack remplir la largeur de l'écran même si les étiquettes/composants de texte n'ont pas besoin de la largeur complète?

Une astuce que j'ai trouvée est d'insérer un vide HStack dans la structure comme suit:

VStack(alignment: .leading) {
    HStack {
        Spacer()
    }
    Text("Title")
        .font(.title)

    Text("Content")
        .lineLimit(nil)
        .font(.body)

    Spacer()
}

Qui donne la conception souhaitée:

desired output

Y a-t-il une meilleure façon?

120
ielyamani
 var body: some View {
      VStack {
           CarouselView().edgesIgnoringSafeArea(.all)           
           List {
                ForEach(viewModel.parents) { k in
                    VideosRowView(parent: k)
                }
           }
    }
 }
0
Julien Sez'n