Formation Formateur Swift
by Apple
Jour #2
Prog
- interface builder
- func, structures class
- Displaying Data
- Controls
- Autolayouts, StackViews, Calculator
- Labs
- Qu'est ce qu'une excellente app ?
Finir debbugage de la veille
- FirstTimeDebugging App
- ne fonctionne pas
- 2 bugs errors de xcode (guidage)
- message il manque { un peu flou et un autre qui parle du nom d'un paramètre qui doit être suivi par :
- Warning : variable jamais utilisé, correction var en let
- correction interactive : point blanc (solution proposée)
- bouton fix pour actions
- refaire un cmd+b pour voir si elle a été corrigée
- Attention : se méfier des propositions, error où il faut ajouter un ;, il ne comprend pas votre code, on va avoir une autre fois la même erreur juste après
- Attention : MAJ des settings du projet car compilateur a évolué (rajouter des warning supplémentaire)
Finir debbugage de la veille
- Depuis Xcode 9 : lancement simultané de simulateur
- Plusieurs appareil de lancer sans avoir besoin de relancer (nb max dépend de votre mac) il vous dira si c'est trop
- Debug que sur un seul simulateur à la fois
- 1 error de compilation : collection vide à cause d'un double removeFirst() dans AppDelegate
- Break point et cmd+r
- thread1 break point
on voit la valeur de testArray et voir le contenu - Bouton pour continuer le run : continue program execution
- Bouton step over : pas à pas va à la ligne suivante
Break point
- Actif/inactif : selon la couleur (bleu/gris)
- l'intégralité des break point peuvent être désactivés
- si désactivé avant la désactivation générale (garde les états actif/inactifs)
Accès documentation
- clic sur un élément : Barre latérale avec menu ?
- alt+Clic sur un élément : point d'interrogation
- exemple sur la documentation d'une fonction
- On peut charger la documentation en local
interface builder
- storyboard main
- composants
- controls : outlet action
Storyboard
- scène
- segue way : chemin, relation expliquée entre les scènes, infos de transition et ou de relation
- creation new projet
- voir le fichier principal : main (et pas lunch screen)
dans le main interface - et voir la storyboard main
Main storyboard
- clic sur ma scène
- menus côté droit : onglet milieu : background
- comment mettre plus de temps sur le launch screen
- exercice champs texte et bouton
- en bas partie droite : en jaune nouveaux types de scène (pas maintenant)
- composants text field et button
- champs de recherche de composant en bas
- tas de guides bleus pour positionner, espacer, aligner, aérer, mettre des marges
- human interface guidelines (documentation)
Main storyboard
- label
- double clic ou barre latérale pour changer le texte
- manque visibilité
- Font augmentée à 25 et label à save
- exercice récupérer, interagir avec l'UI pour print le champ text
- mode assistant, deuxième petit bouton, d'un coté UI et de l'autre le code en même temps
- variable pour accéder au champs text : nameTextfield
- clic + ctrl de l'élément bouton,
- proposition d'outlet (ma variable)
- weak on lui fait confiance, on est d'accord (pas mtn)
- @outlet, petit point pour voir à quoi c'est relié
Main storyboard
- exercice récupérer, interagir avec l'UI pour print le champ text
- créer le lien de l'élément bouton vers code : ctrl + clic
- ici on créer une action
- on choisi le type d'event, le type UIButon
- fonction swift créer, argument sender par défaut ()
- On print le text du champs dans cette action, dans la console du terminal
- Si j'ai rien à faire de mon label : je n'ai pas besoin d'outlet
- Si customisation : outlet oui
Composants et Controls utilisables
- Controls : actions ou IBActions
- Outlet : tout le reste, les variables ect
- Labels, button, textfield (evenement on text changing)
type de contenus, types de clavier (si adresse mail tel clavier, si numero tel afficher clavier numérique ect) - uiimageview
- scale to fill : apparaitre toute l'image dans la zone, attention peu déformer l'image
- aspect fit : apparaitre intégrale sans déformation
- aspect fill : apparaitre une partie de l'image qui remplie toute la zone
Autres composants
- UIswich
value on/off - UISliders
toujours lié à un sender et à un valeur change (.value)
définir par défaut, val min, val max et on peut récupérer les valeurs entre en Float
pas ne notion de pas, de range dans le sliders - Listes : plusieurs types différents
- Liste déroulante : tableview
- listes avancées : collection view, scroll view
- Picker view : (date picker)
Exercice guidé appelé Light
- UIImage ajouter dans Assets
- créer UIImageView
- Image en png
à chaque fois en différentes résolutions
100x100 pour l'imageView
il faudrait prévoir pour tous les appareils
100x100 (pu besoin), 200x200 == 2x et 300x300 == 3x
- p25 : light ou 96
- help : cmd+shift+0
- UISwitch outlet + button et on modifie view.background
- Sinon refaire le switch avec un button et une enum
Unit 2.2 : Les fonctions
- Swift utilise des paramètres nommés par défaut
- nom du paramètre apparait quand on l'appelle
- Optimisé :
On peut appeler la fonction dans un résultat print
print("Bienvenue à l'école vous avez \(coursJournee(matin: 5, apres: 6)) cours aujourd'hui")
func coursJournee(matin: Int, apres: Int) {
return matin + apres
}
Unit 2.2 : Les fonctions
- on peut utiliser un nom externe pour les arguments
- en donnant 2 noms à la suite
- on peut omettre les params quand très explicite (func add par exemple avec _ qui le rend optionnel)
- On peut Fixer une valeur par défaut (proposera 2 fonctions pour le prix d'une), pour tous ou aucun
Ajouter device iPad à la place d'un simulateur
- compte developer gratuit
- developer.apple.com
dans certificates et devices
chercher UIUD dans Xcode - dans Xcode window>devices and simulators et on trouve l'ID
- Dans le fichier de config mettre une team et un compte dev
Structures
- exemple person
- Ne pas se tromper avec la minuscule et la majuscule entre variable et type de la structure (Xcode ne dira rien)
- methodes
- initialiser : init(), on peut les redéfinir (comme constructeur) exemple : String.init()
- Plusieurs façon de les générer
pas envie, je mets des valeurs par défaut
notion d'instance
- différence entre structure et une classe ?
- mutating method : modifient une variable de ma structure
vérifier que les func qui modifient la structure on va mettre : mutating func
mot clé : mutating func
- si on a une structure const toutes les valeurs sont const même si il y a marqué var
computed property
- variable qui exécute du code pour récupérer une valeur
- propriété calculée : mélange entre fonction et variable
- différence : pas de paramètres à passer
- en JS ils peuvent en passer
- exemple : structure temperature
- prop calculée
labs
- memberwise initializer == init par défaut toute les var
- xxx
- class : héritage et surtout sécurité entre les instances
Formation Formateur Swift Jour 2 by Apple
By pierreb4u
Formation Formateur Swift Jour 2 by Apple
- 229