web-dev-qa-db-fra.com

Ajout de lignes illimitées dans un texte (SwiftUI)

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))

        }
    }
}

Éditer

.lineLimit(X), a fait l'affaire. Mais est-il possible de ne pas fixer un montant spécifique, par exemple. Avec juste un 0?

10
Jacob Ahlberg

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.

12
RPatel99

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.

24
Michael Ozeryansky

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)
5
Dary

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

1
Melissa McArthur

Si lineLimit (nil) ne fonctionne pas pour vous, essayez de définir manuellement layoutPriority selon ce qui vous convient .layoutPriority(0.5)

0
Pacu