web-dev-qa-db-fra.com

Comment avoir du texte dans les formes Swiftui?

Je veux ajouter du texte (par exemple, HI) dans une forme (par exemple, une place) à Swiftui et faites-les agir comme un seul objet.

On dirait qu'il n'y a pas de moyen direct d'ajouter du texte en forme à Swiftui.

8
AtharvSalokhe

Voici, imo, approche la plus simple:

Schéma générique

Text(_any_of_text_)
    .background(_any_of_Shape)

par exemple:

Text("Hello, World!")
    .background(Rectangle().stroke())

Text("Hello, World!")
    .background(RoundedRectangle(cornerRadius: 4).stroke())
1
Asperi

Voici ce que je considère comme une réponse plus complète. Cela fonctionnera à partir de Xcode 11.5:

Text(question)
    .fixedSize(horizontal: false, vertical: true)
    .multilineTextAlignment(.center)
    .padding()
    .frame(width: 300, height: 200)
    .background(Rectangle().fill(Color.white).shadow(radius: 3))

Remarques:

  • fixeSize () laissera le texte envelopper (puisque .Linelimit (nil) ne fonctionne plus). Vous pouvez l'omettre si vous voulez simplement une ligne de texte avec ellipsis
  • multilinetextalignment () vous permet de centrer ou d'aligner le texte de quelque manière que ce soit
  • le rembourrage () donne au texte plus d'espace pour respirer dans le rectangle ()
  • cadre () définit la largeur et la hauteur du texte () et donc, le rectangle (), car il s'agit de l'arrière-plan du texte ()
  • fond () Définit la forme de l'arrière-plan du texte (). J'ai ajouté une couleur de remplissage et une ombre portée ici aussi

Le résultat final de cet exemple est que le texte semble apparaître dans une carte de repère comme forme!

1
Gene Loparco

Créez une nouvelle vue Swiftui et utilisez une pile Z pour créer votre objectif.

struct YourCustomObject: View {

    var body: some View {
        ZStack {
            Rectangle()
                .fill(Color.secondary)
                .frame(width: 200, height: 200)

            Text("Your desired text")
                .foregroundColor(.white)
        }
    }
}
0
Tobias Hesselink
Text("Hi")
 .frame(width: 40, height: 40, alignment: .center)
 .background(Color.black)
 .clipShape(Rectangle())
0
Christina