J'adorerais construire un écran de défilement, donc je voulais l'intégrer ScrollView
. Mais je ne suis pas en mesure d'y parvenir, la vue se réduit à sa taille compressée. Disons que je veux que le ScrollView
défile verticalement, j'aimerais donc que le contenu corresponde à la largeur de scrollView. J'utilise donc un tel aperçu:
struct ScrollSubview_Previews : PreviewProvider {
static var previews: some View {
func textfield() -> some View {
TextField(.constant("Text")).background(Color.red)
}
return Group {
textfield()
ScrollView {
textfield()
}
}
}
}
Mais cela se termine par un résultat comme celui-ci:
C'est un problème connu qui existe également dans la version bêta 2 - consultez les notes de publication d'Apple Xcode 11 ici ⬇️ https://developer.Apple.com/documentation/xcode_release_notes/xcode_11_beta_2_release_notes .
La solution de contournement mentionnée par Apple eux-mêmes consiste à définir un cadre fixe pour l'élément intérieur ScrollView. Dans ce cas, je suggère d'utiliser GeometryReader pour fixer la largeur de l'écran, la hauteur est automatiquement adaptée au contenu.
Par exemple, si vous devez adapter le contenu du ScrollView à la largeur de l'écran, vous pouvez quelque chose comme:
return GeometryReader { geometry in
Group {
self.textfield()
ScrollView {
self.textfield()
.frame(width: geometry.size.width)
}
}
}
Voici une astuce: introduisez un HStack
qui n'a qu'un Spacer
:
return Group {
HStack {
Spacer()
}
textfield()
ScrollView {
textfield()
}
}