Logo de Swift en orange sur fond gris qui sert de hero de présentation de la formation sur les fondamentaux de Swift

Stacks

Logo de Swift en orange sur fond gris qui sert de hero de présentation de la formation sur les fondamentaux de Swift

Stacks

Pour réaliser la mise en forme des interfaces en SwiftUI, il existe une famille de composants appelée Stacks (pour “empilements”). Trois types principaux permettent d’organiser les éléments de l’interface, à la verticale avec une VStack, à l’horizontale avec une HStack, ou en superposition avec une ZStack (les éléments sont alors placés les uns sur les autres).

Les Stacks sont la base de la création de tes écrans en SwiftUI. Elles s’assemblent facilement pour concevoir des interfaces sur mesure. Prends le temps de les manipuler, tu verras, c’est intuitif à prendre en main

VStack

On commence par la VStack, qui signifie “Vertical Stack” (empilement à la verticale). Tous les composants placés entre les accolades {} de la VStack s’empilent de haut en bas.


VStack {
    Text("Bonjour")
    Text("Good morning")
    Text("Buongiorno")
}
Capture d’écran d’une app iOS montrant le placement de composants dans une VStack.

Personalisation alignmentspacing

alignment Définit comment les enfants sont alignés horizontalement. Les valeurs possibles incluent .leading, .center et .trailing.  (.leading aligne les éléments à gauche du composant, tandis que .trailing les positionne à droite.)

spacing  Définit l’espacement entre les éléments enfants. Tu peux passer une valeur spécifique pour cet espacement.


VStack (alignment: .leading, spacing: 20){
    Text("Bonjour")
    Text("Good morning")
    Text("Buongiorno")
}
Capture d’écran d’une app iOS montrant le placement de composants dans une VStack personnalisée.

HStack

Maintenant, place à la HStack, qui signifie “Horizontal Stack” (ou empilement horizontal). Ici, les composants placés entre les accolades {} d’une HStack s’alignent naturellement à l’horizontale, de gauche à droite.


HStack{
    Text("Bonjour")
    Text("Good morning")
    Text("Buongiorno")
}
Capture d’écran d’une app iOS montrant le placement de composants dans une HStack.

Personalisation alignmentspacing

→ alignment Définit comment les enfants sont alignés verticalement. Les valeurs possibles incluent .top, .center et .bottom. Par exemple, .top aligne les éléments en haut du composant, tandis que .bottom les positionne en bas.

spacing  Définit l’espacement entre les éléments enfants. Vous pouvez passer une valeur spécifique pour cet espacement.


HStack(alignment: .top, spacing: 40){
  Text("Bonjour")
  Text("Good morning")
  Text("Buongiorno")
}
Capture d’écran d’une app iOS montrant le placement de composants dans une HStack personnalisée.

ZStack

Pour finir, parlons des ZStack, où “Z” représente l’axe de profondeur. Cette stack permet de superposer les éléments les uns sur les autres.


ZStack{
  Circle()
      .frame(width: 300, height: 300)
  Circle()
      .frame(width: 50, height: 50)
      .foregroundStyle(.red)
}
Capture d’écran d’une app iOS montrant le placement de composants dans une ZStack.

Personalisation alignment 

→ alignment Permet de contrôler l’alignement des enfants dans le ZStack. Les valeurs possibles incluent .center, .top, .bottom, .leading, .trailing, et leurs combinaisons comme .topLeading


ZStack(alignment: .topLeading){
  Circle()
      .frame(width: 300, height: 300)
  Circle()
      .frame(width: 100, height: 100)
      .foregroundStyle(.red)
}
Capture d’écran d’une app iOS montrant le placement de composants dans une ZStack personnalisée.

Stack

Note

Les Stacks te permettent de gérer la mise en forme de tes interfaces utilisateur avec une grande flexibilité, il n’y a aucune limite à imbriquer des Stacks les unes dans les autres, tu peux avoir une VStack incluse dans une HStack, qui elle-même contient une autre VStack, et même une ZStack, et ainsi de suite. Tu l’as compris, les possibilités sont infinies, mieux encore, maîtriser les Stacks te permettra de reproduire fidèlement tes écrans en code.

Un conseil précieux, surtout si tu débutes avec SwiftUI, apprends à déconstruire ton écran. Ça t’aidera à identifier les Stacks nécessaires, fais cet exercice mentalement ou sur papier. Déconstruire, c’est te dire, “OK, ici mes composants sont alignés de haut en bas, donc j’ai besoin d’une VStack, là, mes éléments sont côte à côte, alors c’est une HStack, et en regardant cette HStack, je remarque qu’elle contient deux ensembles de composants empilés verticalement, donc j’ajoute une autre VStack.”

Prendre cette habitude t’aidera énormément, surtout si tu galères un peu au début, les Stacks deviendront vite un réflexe pour structurer tes interfaces avec efficacité et précision !

Stack

Note

Les Stacks te permettent de gérer la mise en forme de tes interfaces utilisateur avec une grande flexibilité, il n’y a aucune limite à imbriquer des Stacks les unes dans les autres, tu peux avoir une VStack incluse dans une HStack, qui elle-même contient une autre VStack, et même une ZStack, et ainsi de suite. Tu l’as compris, les possibilités sont infinies, mieux encore, maîtriser les Stacks te permettra de reproduire fidèlement tes écrans en code.

Un conseil précieux, surtout si tu débutes avec SwiftUI, apprends à déconstruire ton écran. Ça t’aidera à identifier les Stacks nécessaires, fais cet exercice mentalement ou sur papier. Déconstruire, c’est te dire, “OK, ici mes composants sont alignés de haut en bas, donc j’ai besoin d’une VStack, là, mes éléments sont côte à côte, alors c’est une HStack, et en regardant cette HStack, je remarque qu’elle contient deux ensembles de composants empilés verticalement, donc j’ajoute une autre VStack.”

Prendre cette habitude t’aidera énormément, surtout si tu galères un peu au début, les Stacks deviendront vite un réflexe pour structurer tes interfaces avec efficacité et précision !