XIB vs Storyboards vs Code

Même si la majorité des projets non SwiftUI se dirigent sur des solutions XIBs, la question se pose toujours…

Apple préconise l’utilisation de storyboards qui ont eu beaucoup d’amélioration.

L’apparition de SwiftUI et des Previews nous permet également d’avoir des aperçus directs de nos vues codées ce qui était le principal défaut de cette solution.

Le XIB lui, reste constant dans ce qu’il nous permet de faire et il le fait bien et c’est pourquoi il est majoritairement utilisé depuis quelques années.

Dans cet article, nous allons voir les points positifs et négatifs de ces solutions afin de vous orienter sur l’utilisation de l’un ou de l’autre sur votre projet.

Important: cet article ne concernera pas SwiftUI qui lui ne permettra que la solution Code (principe de SwiftUI).

XIB :

Avantages :

  • Portabilité des vues: permet un découpage des composants et des utilisations dans de multiple parties de l’application facilement
  • Rapidité de construction de la vue
  • Visualisation directe dans Xcode
  • Gestion de contraintes simplifiée grace à l’éditeur et mise en évidence des éventuels problèmes liés aux contraintes
  • Possibilité de localiser ses XIBs (pour ne pas avoir le même affichage selon la langue ou le pays de l’utilisateur)

Inconvénients :

  • Merge délicats dans le cas de conflits ( la vision XML d’un XIB ne permet pas une résolution rapide d’un conflit)
  • Pas toujours évident d’avoir des XIBs génériques
  • Impossible d’avoir des XIBs avec beaucoup de contraintes/affichages dynamiques de façon propre.
  • Peu performant: c’est du XML donc Xcode doit l’analyser et le parser donc plus on a de XIBs plus le temps de compilation va être long
  • Propriétés plutôt classiques à rajouter soit même via les @IBDesignable tel que du corner radius ou du shadow
  • Messages de debug pas toujours clairs lorsqu’un lien est manquant entre le XIB et son fichier .swift associé

Storyboards :

Le storyboard, selon la manière dont on l’utilise, a plus ou moins les mêmes avantages et inconvénients que le XIB.

Avantages :

  • Possibilité de créer une navigation simple directement dans le storyboard
  • Rapidité pour créer une application poc (mock up)
  • Gestion de contraintes simplifiée grace à l’éditeur et mise en évidence des éventuels problèmes liés aux contraintes

Inconvénients :

  • Si les storyboards comprennent de nombreuse vues, vous aurez beaucoup plus de conflits a gérer et les conflits sont plus compliqués à gérer dans du XML
  • Surcharge des DerivedData de temps en temps le nettoyage ne se fait pas bien
  • Aucune portabilité / reuse

Code :

Avantages :

  • Vues génériques et dynamique simple
  • Tout est customisable
  • Robustesse accrue car tout est controlé
  • Notion de composants très facilement réutilisable et générique facile à mettre en place
  • Facile à debugger
  • Vision simple des contraintes
  • Le code est la source de vérité (XIB ou Storyboard peuvent avoir des propriétés écrasées dans le code on peut s’y perdre)

Inconvénients :

  • Plus de ligne de code
  • Nécessite plus de connaissances de base
  • Un peu plus long au début à mettre en place
  • Obligation d’avoir une approche composants (pas vraiment mauvais mais restrictif )
  • Pas de représentation visuelle (plus le cas grace au Preview )

Conclusion :

Pour une solution rapide dans la mise en place, pour une simple application ou pour avoir un petit mock up de votre app la solution Storyboard semble la plus recommandée.

Si vos équipes ne sont pas confirmées et à l’aise avec la solution « Vue par le code » le meilleur choix sera le XIB mais pour nous la meilleure solution en terme de robustesse restera le code.

Vous souhaitez en savoir plus ? Contactez-nous !

Bastien LEBRUN – Développeur iOS
Victor BODINAUD – Développeur iOS
Maxime HERMOUET – Lead Developer