Interagissez avec SwiftUI

Le sprint planning est fini, c’est le dĂ©but de votre premier sprint !

Il est temps pour vous de commencer Ă  coder, toujours avec le soutien de Samira qui est lĂ  pour vous guider.

Vous commencez par le premier ticket du premier POC. Cela correspond Ă  la version 1 de la page de dĂ©tail d’une femme de la tech. Le voici :

Titre

Écran dĂ©tail POC 1

Description

En tant que visiteur de l’exposition je souhaite avoir des informations dĂ©taillĂ©es sur une femme de la tech que j’aurai prĂ©cĂ©demment sĂ©lectionnĂ©e dans la liste afin d’apprendre Ă  mieux la connaĂźtre.

Ressources

  • Maquette de l'Ă©cran sans la barre de navigation

  • Maquette avec les dimensions et couleurs

  • Code couleur :

    • Blanc #FFFFFF

    • Noir #000000

    • Gris foncĂ© #333333

    • Violet #AF52DE

Priorité

2

Estimation

3

Maquette associée à la User Story
Maquette associée à la User Story

Nous avions effectué un découpage ensemble de ce ticket afin de savoir par quoi commencer dans votre développement.

La premiĂšre Ă©tape est donc de commencer par positionner les Ă©lĂ©ments de notre page. C’est ce que nous allons voir dans ce chapitre.

Samira sera lĂ  pour vous aider et faire du pair programming avec vous. Cela signifie que vous allez ĂȘtre Ă  2 devant un Ă©cran et un clavier pour rĂ©aliser cette tĂąche. Comme ça, vous serez en capacitĂ© de refaire la mĂȘme chose seul sur l’autre projet POC.

Débutez avec SwiftUI

À la crĂ©ation du projet, en choisissant le template d’application en Swift et SwiftUI, Xcode aura dĂ©jĂ  créé un premier fichier SwiftUI qui s’appelle ContentView.

Ouvrez-le en le sélectionnant depuis le panneau de gauche.

Vous devriez avoir Ă  gauche le code et Ă  droite le Canva.

Interface SwiftUI
Interface SwiftUI

Souvenez-vous, s’il manque le Canva, vous pouvez l’afficher ou le cacher en cliquant sur le bouton en haut à gauche.

Si le Canva est grisĂ© et qu’il est Ă©crit Preview paused, vous n’avez qu'Ă  cliquer sur la petite flĂšche circulaire pour le relancer.

La structure du fichier

Nous allons tout d’abord nous concentrer sur le code dĂ©jĂ  Ă©crit et essayer de le comprendre.

//  ContentView.swift
//  TheyMakeIt-POC1
//
//  Created by Amandine Cousin on 23/04/2024.

Chaque fichier Swift ou SwiftUI aura toujours une entĂȘte gĂ©nĂ©rĂ©e automatiquement Ă  la crĂ©ation. Ce sont les lignes de code que vous voyez en commentaires et qui commencent par ‘’’//”’.

On peut y lire le nom du fichier, puis le nom du projet et enfin, l’auteur. Plus prĂ©cisĂ©ment c’est le nom du crĂ©ateur du fichier. Si vous ĂȘtes plusieurs Ă  travailler sur un mĂȘme projet, ce sera toujours le nom de la personne qui aura créé le fichier.

Ensuite, on retrouve une premiĂšre structure. C’est l’objet qui reprĂ©sente la vue de notre fichier. On le sait car elle a le mĂȘme nom que le fichier et que ce nom est suivi par le protocole   View  .

struct ContentView: View {
var body: some View {
VStack {
// composants de la page
    }
    .padding()
    }
}

Ce protocole c’est ce qui va vous permettre de dire à Xcode que vous souhaitez construire une vue et qui va vous donner tous les outils pour le faire.

Dans cette structure, une variable est dĂ©clarĂ©e, elle s’appelle body. Si vous avez dĂ©jĂ  fait de l’HTML, cela doit vous dire quelque chose. Body veut dire corps en français, c’est Ă  l'intĂ©rieur du corps que l’on va coder le contenu de notre Ă©cran. Elle est obligatoire si on veut conformer au protocole  View  et donc faire une vue.

some View  indique que le body fera bien partie de la vue et respecte bien le protocole.

Les composants

Ensuite, nous avons une  VStack  , c’est ce qui va nous permettre de regrouper les Ă©lĂ©ments de notre vue. Nous rentrerons plus dans les dĂ©tails dans quelques instants.

À l’intĂ©rieur de cette stack, on retrouve 2 composants.

C’est quoi un composant ?

Ce sont les éléments graphiques qui vont vous permettre de composer votre vue.

Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")

Ici on a une  Image  et un  Text  . Ces composants sont fournis par SwiftUI, ils ont déjà été déclarés par le langage et font partie des composants de bases que vous pouvez utiliser à votre guise.

La plupart des composants ont besoin d’avoir certaines informations pour pouvoir ĂȘtre créés. Une image aura besoin d’un nom pour savoir quelle image afficher. Ici c’est une image systĂšme qui se trouve dans les SF Symbols.

Les SF Symbols ? Qu’est-ce que c'est que ça ?

C’est une bibliothĂšque de pictogrammes fournie par Apple. Vous pouvez tĂ©lĂ©charger ici la derniĂšre version .

Le texte lui aura besoin d’une chaüne de caractùres pour savoir quoi afficher.

Essayez de changer  “Hello, world!”  par  “Hedy Lamarr”  .

ImmĂ©diatement, le Canva se met Ă  jour pour afficher votre texte ! Magique non 🧙?

Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")

Vous remarquerez qu’entre l’image et le texte il y a d’autres lignes de code. C’est de cette façon, avec un  .  devant, que vous pourrez personnaliser les composants.

foregroundStyle  c’est la couleur donnĂ©e Ă  notre pictogramme. Ici  .tint  c’est la couleur par dĂ©faut Apple, du bleu. Remplacez  .tint  par une autre couleur comme par exemple  .orange  .

Le globe terrestre n’est plus bleu mais orange dĂ©sormais.

Affichage d’un composant texte
Affichage d’un composant texte

La preview

Une derniÚre chose : vous avez remarqué, il y a un autre élément que notre structure  ContentView  qui a été déclarée en bas de la page.

#Preview {
ContentView()
}

La preview, c’est le code qui nous permet de choisir ce qu’on affiche ou non dans le Canva. D’ailleurs, si vous supprimez la preview et son contenu, le Canva disparaĂźt ! Ici c’est notre view  ContentView  qui est donc appelĂ©e pour avoir son aperçu.

Ajoutez votre premier composant

Ok, vous avez compris les composants déjà en place. Et si vous en ajoutiez un nouveau ?

Voyons ensemble 2 méthodes pour ajouter un composant dans cette vidéo :

  • Les 2 façons d'ajouter un nouveau composant : 

    • Dans le code, en Ă©crivant directement  Text(“1914 - 2020”)  .

    • Depuis le menu des composants, en cliquant sur le bouton + en haut Ă  droite et en sĂ©lectionnant le composant qui vous intĂ©resse. 

  • Ce menu permet d'accĂ©der plus rapidement aux ressources comme les images, les SF Symbols ou les couleurs.

  • Vous pouvez rechercher ce que vous voulez dans ce menu avec la barre de recherche 

PlutĂŽt facile non ?

Pour l'instant, pas besoin de s’occuper de la couleur ou de la taille de nos composants. Vous allez juste rajouter autant de composants Text nĂ©cessaires et les remplir avec des strings correspondantes aux maquettes.

Vous devriez avoir une structure comme ceci !

Vous avez tous vos éléments ? Alors on continue !

Utilisez les stacks

Je vous l’avais dit, nous allons creuser un peu plus ces stacks. Certes, elles vous aident à grouper vos composants mais pas que.

Stack en français, on peut le traduire en pile. C’est donc une pile ou un empilement d'Ă©lĂ©ments.

Vous avez dĂ» remarquer, ce n’est pas un simple stack que l’on a dans notre code, c’est une  VStack  !

Et je vais vous montrer dans la vidéo suivante comment les utiliser :

Les types de stacks

  • Il existe 3 types de stacks :

    • V pour Vertical ou l’axe Y,

    • H pour Horizontal ou l’axe X,

    • Z pour l’axe Z, c’est-Ă -dire en profondeur

  • Les composants sont toujours empilĂ©s dans le sens de l’écriture, le premier en premier, le deuxiĂšme, en dessous ou Ă  droite.

  • Vous pouvez imbriquer des Stacks les unes dans les autres.

La VStack

  • En regroupant tous les composants qui sont collĂ©s ou semblables de maniĂšre verticale par rapport Ă  la maquette en utilisant des VStacks, on obtient ce code.

La HStack

  • Si vous continuez avec les HStacks, il y en a lorsque les 2 composants d’une mĂȘme ligne sont semblables comme actrice et inventrice par exemple.

  • En ajoutant les 2 HStacks qu’il manque, vous obtenez cet autre code.

Positionnez les composants

Maintenant que nos composants sont bien groupés dans le code, nous allons pouvoir les regrouper visuellement et les positionner.

Pour cela il existe plusieurs façons de faire et nous allons voir les principales, ensemble, en vidéo :

Les diffĂ©rentes mĂ©thodes d’espacement :

L’alignement

  • Comme pour du texte sur word, vous pouvez aligner les composants : 

    • Ă  gauche avec .leading

    • Ă  droite avec .trailing

    • au centre avec .center

  • Cet argument, s’utilise comme ceci :   VStack(alignment: .center)  .

  • Pour la HStack c’est similaire, vous pouvez aligner en haut avec top, au centre avec centre et en bas avec bottom.

L’espacement ou Spacer

  • Il pousse tout le monde pour prendre toute la place disponible lĂ  oĂč il sera. 

  • Mis tout en bas, tout le contenu de votre page sera contraint de rester en haut. 

  • Si vous le mettez au milieu entre 2 composants dans une HStack, il poussera les Ă©lĂ©ments Ă  gauche et Ă  droite de l'Ă©cran.

Le padding

  • Le padding c’est lui qui va vous aider Ă  mettre une marge entre vos diffĂ©rents composants. 

  • Par dĂ©faut, si vous ne prĂ©cisez pas, il est de 16 points partout.

  • Vous pouvez Ă©galement prĂ©ciser l’espacement pour un cĂŽtĂ© seulement, par exemple  .padding(.top, 8)  . 

Pour notre maquette, seul le padding est suffisant. Ajoutez les marges pour les VStacks qui en ont besoin.

À vous de jouer

Contexte

Samira vous a accompagnĂ© pour positionner les Ă©lĂ©ments de la premiĂšre maquette du premier POC. Maintenant c’est au tour du second projet et cette fois-ci vous serez seul pour le faire.

Consignes

Samira vous a justement envoyé un mail :

Super ce pair programming ensemble ! J’ai adorĂ© nos Ă©changes !

Je compte sur toi pour continuer sur la mĂȘme lancĂ©e et arriver Ă  placer les composants de la page de dĂ©tail du second projet. Tu verras c’est assez similaire, je sais que tu peux le faire !

Dis-moi quand tu as fini et je passerai te voir pour vĂ©rifier que tout est OK et qu’on peut passer Ă  la suite.

Reprenez le projet initialisĂ© prĂ©cĂ©demment afin de modifier la structure existante comme ce qui vient d'ĂȘtre fait avec le cours.

  1. Ajoutez les composants dont vous avez besoin

  2. Regroupez-les avec les bonnes stacks

  3. Servez-vous des padding pour placer les éléments comme vous le souhaitez

  4. Pour les pictogrammes, 

    1. les images se nomment : 

      1. calendar

      2. bookmark

      3. mappin.and.ellipse

    2. le padding doit se faire uniquement en bas et doit ĂȘtre de 4

Vous devriez avoir un écran qui ressemble à celui-ci :

Affichage Ă  obtenir
Affichage Ă  obtenir

En résumé

  • La preview, c’est ce qui est affichĂ© dans le Canva

  • Il existe une multitude de composants fournis par SwiftUI

  • Les stacks sont ce qui aide Ă  composer un Ă©cran en empilant les composants sur l’axe horizontal, vertical ou en profondeur.     

  • Le padding, c’est la base pour ajouter de l’espace entre les Ă©lĂ©ments d’une page

Petit à petit, notre interface commence à ressembler à la maquette, mais il nous manque encore la customisation des éléments de la vue pour que la ressemblance soit plus frappante. Suivez-moi dans le chapitre suivant pour apprendre à personnaliser vos composants.

Et si vous obteniez un diplĂŽme OpenClassrooms ?
  • Formations jusqu’à 100 % financĂ©es
  • Date de dĂ©but flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous