@ObservedObject et @Published dans SwiftUI

Combine peut être utilisé dans SwiftUI par le biais des property wrappers @ObservedObject et @Published.

Au quoi sert Combine ?
Combine est une API dédiée au traitement de données asynchrones. Il peut servir dans deux contextes :

  • quand on ne peut pas obtenir la donnée immédiatement (par exemple lors d’une requête web)
  • quand on obtient un flux de données qui reflète un changement en temps réel (par exemple, micro, camera ou autre capteur qui retourne des données numériques).

Imaginons une vue dans Swift UI qui affiche de telles données. On ne sait pas quand elles seront disponibles. Il faut donc que la vue se mette à jour lors que les données arrivent. C’est la que Combine intervient.

Lire la suite @ObservedObject et @Published dans SwiftUI

info.plist a disparu

Pour certains projets crées avec XCode 13, l’application ne génère plus de fichier info.plist. Au lieu de cela, vous pouvez accéder aux paramètres de ce fichier dans l’onglet Infos de la Target :

Custom iOS Target Properties dans l'onglet Info
Custom iOS Target Properties dans l’onglet Info

Afficher du HTML dans SwiftUI

La vue texte de SwiftUI ne permet pas (encore) d’afficher du texte enrichi. C’est l’occasion de créer une vue sur mesure, basée sur une vue existante de l’UIKit.
UILabel permet l’affichage de texte enrichi, et la classe NSAttributedString peut convertir du html.

Commençons par créer un wrapper pour la vue UILabel. On utilise pour cela le protocole UIViewRepresentable.

Lire la suite Afficher du HTML dans SwiftUI

SwiftUI @Binding et @State

Dans SwiftUI, @Binding et @State sont des décorateurs qui associés à une déclaration de variable, permettent de simplement lui ajouter des propriétés.

Les vues dans SwiftUI sont organisées en hiérarchie. Pour gérer les interactions entre elles, il faut qu’une vue puisse communiquer des informations à sa vue parente. C’est là qu’interviennent les Bindings

Un binding est une référence à une variable, en général passée en paramètre à une vue enfant. Il fonctionne de manière similaire à un pointeur. Cette référence permet à la vue enfant de lire et de modifier le contenu de la variable.

Lire la suite SwiftUI @Binding et @State

Utiliser la caméra dans une application iOS (3/3)

Dans l’article précédent, nous avons vu comment utiliser AVCaptureSession et AVCapturePhotoOutput pour prendre une photo.

Voyons comment utiliser la classe AVCaptureVideoOutput. Alors que AVCapturePhotoOutput offre une fonction capturePhoto, dans le cas de AVCaptureVideoOutput, le delegate permet d’accéder à un buffer avec la fonction captureOutput(_ output: AVCaptureOutput, didOutput...) qui est appelée à chaque fois qu’une nouvelle image est disponible.

Lire la suite Utiliser la caméra dans une application iOS (3/3)