Je viens de découvrir comment je peux obtenir plusieurs lignes de texte dans un Text
. Il semble que Text
ait la même valeur par défaut que UILabel
(une ligne), mais je ne trouve aucune fonction qui réponde à ces critères.
struct ContentView : View {
var body: some View {
VStack(alignment: .leading, spacing: 10) {
HStack {
Text("Avocado Toast").font(.system(size: 24))
}
// This Text does cut, and I wonder how I can achieve multiple rows
Text("Ingredients: Avocado, Almond Butter, Bread")
.font(.system(size: 20))
}
}
}
.lineLimit(X)
, a fait l'affaire. Mais est-il possible de ne pas fixer un montant spécifique, par exemple. Avec juste un 0?
Utilisez .lineLimit()
pour limiter la quantité de lignes de texte. Il prend un Int facultatif (Int?
) Comme argument, et .lineLimit(nil)
autorise un nombre illimité de lignes.
Edit: À partir de SwiftUI Beta 5, Text
a une limite de ligne par défaut de nil
, donc le texte dans Text
sera bouclé par défaut.
Pour encapsuler du texte dans un formulaire .lineLimit(Int.max)
ne fonctionnait pas pour moi. Il semble qu'il ait besoin d'une certaine largeur pour savoir quand emballer. Je crois que la voie officielle est avec .fixedSize
:
Text(message)
.fixedSize(horizontal: false, vertical: true)
La documentation indique:
Cet exemple montre l'effet de fixedSize (horizontal: vertical :) sur une vue de texte plus large que son parent, en préservant la largeur idéale et non tronquée de la vue de texte.
Utilisez ceci:
Text("Ingredients: Avocado, Almond Butter, Bread")
.lineLimit(nil)
Si cela ne fonctionne pas, utilisez cette méthode:
Text("Ingredients: Avocado, Almond Butter, Bread")
.fixedSize(horizontal: false, vertical: true)
Mon texte a continué à être tronqué même sans limite de ligne appliquée. Envelopper mon contenu dans un ScrollView {}
résolu.
Voir plus d'informations ici: https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-horizontal-and-vertical-scrolling-using-scrollview
Si lineLimit (nil) ne fonctionne pas pour vous, essayez de définir manuellement layoutPriority selon ce qui vous convient .layoutPriority(0.5)