Plus de la moitié des applications présentes dans le top 100 de l’AppStore est désormais écrite avec Swift. Senior VP Software Engineering chez Apple, Craig Federighi précise d’ailleurs que ce sont plus de 450 000 apps Swift qui sont désormais téléchargeables.

Parmi toutes les nouveautés présentées lors de la WWDC 2019 (Worldwide Developers Conference 2019), Dark mode, iPad OS, meilleures performances avec iOS 13, possibilité d’utiliser des clés USB, carte SD et disques durs externes sur les iPhones et iPad, Apple a également mis l’accent sur un nouveau framework baptisé SwiftUI.

Conçu dans la perspective de proposer une alternative encore plus simple, plus rapide et plus sûre en matière de développement natif d’application iOS, ce nouveau framework a la particularité d’être fondé sur une syntaxe déclarative qui facilite la construction d’interface utilisateur.

S'inscrire à la newsletter Ikomobi

Créer rapidement et simplement des interfaces utilisateurs à partir d’instructions déclaratives

Actuellement, qu’il s’agisse de créer une interface utilisateur sous forme de Storyboard ou bien en privilégiant l’écriture du code, on utilise le framework UIKit proposé par Apple.

Un Storyboard
Un composant générique codé en Swift avec UIKit
Le rendu du composant codé ci-dessus

Grâce à SwiftUI, on peut désormais créer cette même interface utilisateur directement à partir d’instructions déclaratives puis ajouter des paramètres qui vont permettre de personnaliser l’affichage à partir notamment des nouveaux effets et animations conçus par Apple.

SwiftUI est plus rapide à écrire et plus simple d’accès que ses prédecesseurs. En effet, Xcode 11 offre la possibilité de prévisualiser ce que donne l’application au fur et à mesure de l’écriture du code. Il permet d’une part de glisser / déposer des composants directement dans l’écran de prévisualisation puis d’utiliser l’inspecteur pour changer des paramètres à la manière des storyboards.

Au lieu de générer un fichier XML abscon, la nouvelle version d’Xcode génère directement le code. C’est un gain de temps énorme et d’une facilité déconcertante !

La célèbre maxime d’Apple « Everyone can code » (le code à la portée de tous en français) porte désormais tout son sens.

Une interface codée avec SwiftUI avec sa Preview en direct à côté

Swift UI : des premiers pas convaincants chez IKOMOBI

Au sein du pôle iOS d’IKOMOBI nous avons pris la décision de tester cette nouveauté dès le lendemain de sa parution, en nous exerçant tout d’abord avec les tutoriels proposés par la firme à la pomme.

De prime abord, cette nouvelle façon de coder nous est apparue plutôt pratique et surtout beaucoup plus rapide que précédemment. SwiftUI nous a semblé apporter une forte valeur ajoutée lorsqu’il s’est agit de réaliser des interfaces de belles factures (une page scrollable verticalement avec des éléments scrollables horizontalement par exemple).

Afin de poursuivre le test, nous nous sommes ensuite lancés dans la réécriture d’un projet déjà réalisé au sein du pôle iOS d’IKOMOBI. Les choses se sont alors avérées un peu plus complexes.

Des composants essentiels manquent encore à l’appel !

SwiftUI utilise des éléments graphiques qui diffèrent de ceux proposés par UIKit. Les deux librairies ne sont pas compatibles (par exemple, Kingfisher qui permet de récupérer une image depuis une adresse URL et de l’afficher dans une UIImageView).

De plus, SwiftUI omet de fournir certains composants pourtant essentiels lorsqu’il s’agit de réaliser une application. Citons par exemple : UICollectionView, UISearchBar, UIActivityIndicator, UIPageViewController L’un des tutoriels, indique d’ailleurs comment créer son PageViewController avec SwiftUI à partir d’un bridge avec UIKit.

L’absence d’UICollectionView se fait grandement ressentir. Simple avec UIKit, présenter une liste d’items sous forme d’une simple grille devient fastidieux avec SwiftUI. Il faut en effet passer par une ScrollView au sein de laquelle on insère un VStack (StackView verticale) dans lequel on vient placer des HStack (StackView horizontale) qui contiendront les items à afficher. Pour couronner le tout, ces derniers devront eux-mêmes être placés dans des Button afin de pouvoir recevoir un tap et gérer une action à effectuer.

Outre son caractère peu recommandable, cette façon de coder engendre de surcroît un risque majeur de fuite mémoire dans le cas d’un grand nombre d’items à charger.

Dans le cadre de la réalisation d’une application à l’UI complexe, nous émettons enfin un doute quant aux possibilités qu’offrent ce framework à séparer, la réalisation d’une navigation custom à base de containers pour gérer une NavigationBar custom d’un côté et le reste de l’application de l’autre.

Pour un certain temps encore, SwiftUI s’adressera avant tout à ceux qui s’initient au développement d’applications iOS

SwiftUI nous a convaincu par son potentiel en tant que framework à destination des développeurs débutants. A contrario, il nous est apparu encore incomplet étant entendu qu’il ne supporte qu’iOS 13. De plus, l’autocomplétion nous est parue capricieuse, ne nous proposant par moment aucune proposition d’attributs pour nos éléments graphiques, alors qu’il y en avait un grand nombre qui étaient applicables.

Actuellement en version bêta, SwiftUI sera sûrement amené à s’enrichir dans les prochains mois. Mais dans l’état actuel, il n’est pas assez viable pour être utilisé dans le cadre de la réalisation d’une application pour l’un de nos clients. De plus, il ne pourra sûrement pas l’être avant deux ans minimum, la version minimale le supportant étant iOS 13. Chez IKOMOBI nous proposons nécessairement le support d’au moins deux versions inférieures à la version actuelle d’iOS.