Ich habe versucht, dies selbst zu verstehen, da andere Antworten hier erwähnen Text.multilineTextAlignment(_:)/ VStack(alignment:)/, frame(width:alignment:)aber jede Lösung löst ein bestimmtes Problem. Letztendlich hängt es von der UI-Anforderung und einer Kombination davon ab.
VStack(alignment:)
Das alignmenthier ist für die inneren Ansichten in Bezug aufeinander.
Das Spezifizieren .leadingwürde also alle inneren Ansichten so verknüpfen, dass ihre Führung miteinander ausgerichtet ist.
VStack(alignment: .leading, spacing: 6) {
Text("Lorem ipsum dolor")
.background(Color.gray.opacity(0.2))
Text("sit amet")
.background(Color.gray.opacity(0.2))
}
.background(Color.gray.opacity(0.1))

.frame
In frame(width:alignment:)oder frame(maxWidth:alignment:)steht das alignmentfür den Inhalt innerhalb der angegebenen Breite.
VStack(alignment: .leading, spacing: 6) {
Text("Lorem ipsum dolor")
.background(Color.gray.opacity(0.2))
Text("sit amet")
.background(Color.gray.opacity(0.2))
}
.frame(width: 380, alignment: .trailing)
.background(Color.gray.opacity(0.1))
Die inneren Ansichten sind jeweils zueinander ausgerichtet, aber die Ansichten selbst sind nacheinander ausgerichtet VStack.

.multilineTextAlignment
Dies gibt die Ausrichtung des Textes im Inneren an und kann am besten gesehen werden, wenn mehrere Zeilen vorhanden sind. Andernfalls frame(width:alignment)wird die Breite automatisch angepasst und von den Standardeinstellungen beeinflusst alignment.
VStack(alignment: .trailing, spacing: 6) {
Text("0. automatic frame\n+ view at parent's specified alignment\n+ multilineTA not set by default at leading")
.background(Color.gray.opacity(0.2))
Text("1. automatic frame\n+ view at parent's specified alignment\n+ multilineTA set to center")
.multilineTextAlignment(.center)
.background(Color.gray.opacity(0.2))
Text("2. automatic frame\n+ view at parent's specified alignment\n+ multilineTA set to trailing")
.multilineTextAlignment(.trailing)
.background(Color.gray.opacity(0.2))
}
.frame(width: 380, alignment: .trailing)
.background(Color.gray.opacity(0.1))

Tests mit Kombinationen:
VStack(alignment: .trailing, spacing: 6) {
Text("1. automatic frame, at parent's alignment")
.background(Color.gray.opacity(0.2))
Text("2. given full width & leading alignment\n+ multilineTA at default leading")
.frame(maxWidth: .infinity, alignment: .leading)
.background(Color.gray.opacity(0.2))
Text("3. given full width & center alignment\n+ multilineTA at default leading")
.frame(maxWidth: .infinity, alignment: .center)
.background(Color.gray.opacity(0.2))
Text("4. given full width & center alignment\n+ multilineTA set to center")
.multilineTextAlignment(.center)
.frame(maxWidth: .infinity, alignment: .center)
.background(Color.gray.opacity(0.2))
Text("5. given full width & center alignment\n+ multilineTA set to trailing")
.multilineTextAlignment(.trailing)
.frame(maxWidth: .infinity, alignment: .center)
.background(Color.gray.opacity(0.2))
Text("6. given full width but no alignment\n+ multilineTA at default leading\n+ leading is based on content, looks odd sometimes as seen here")
.frame(maxWidth: .infinity)
.background(Color.gray.opacity(0.2))
}
.frame(width: 380)
.background(Color.gray.opacity(0.1))
