La question :
C'est parce que List
déduire sa taille à partir de son parent View
. Ainsi, lorsque vous l'intégrez dans quelque chose comme VStack
qui ont une hauteur dynamique, il ne peut pas déduire leur taille correctement.
Solutions :
Vous avez quelques options ici :
1. Taille List
pour correspondre automatiquement à son contenu (parfait)
Vous pouvez utiliser ForEach
directement au lieu d'utiliser List
vous avez alors plus de contrôle sur la taille du contenu.
ForEach(0 ..< 5) { item in
VStack(alignment: .leading) {
Text("Hello World").frame(height: 42)
Divider()
}.padding(.horizontal, 8)
}
Vous pouvez modifier toutes les tailles et tous les espacements en fonction de vos besoins.
2. Taille List
pour faire correspondre son contenu manuellement (Bon mais pas parfait)
Donnez-lui un cadre statique comme vous le faites dans UIKit
en fixant le .frame()
sur les List
:
List(0 ..< 5) { item in
Text("Hello World")
}.frame(height: 224)
Vous pouvez utiliser <code>GeometryReader</code> pour trouver la taille exacte du parent et l'appliquer au <code>List</code>
3. Montrez simplement le List
(Pas bon mais ça marche)
ajouter .scaledToFill()
modificateur pour List