SwiftUI Liquid Glass : Le Guide Complet iOS 26

Liquid Glass représente la plus grande évolution du design Apple depuis iOS 7. Introduit à la WWDC 2025, ce nouveau langage visuel unifie iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26, tvOS 26 et visionOS 26. Découvrons comment l'implémenter dans vos applications SwiftUI et UIKit.

Comprendre Liquid Glass

Un méta-matériau digital

Liquid Glass n'est pas un simple effet visuel. C'est un méta-matériau digital qui simule les propriétés optiques du verre : translucidité, réfraction, profondeur et réponse au mouvement. Contrairement aux effets de flou traditionnels qui dispersent la lumière, Liquid Glass utilise le lensing — il courbe et concentre la lumière en temps réel.

Les caractéristiques fondamentales :

    • Lensing : Courbure et concentration de la lumière en temps réel
    • Specular highlights : Reflets répondant au mouvement de l'appareil
    • Adaptive shadows : Ombres qui s'ajustent au contenu sous-jacent
    • Interactive behaviors : Réponses visuelles aux interactions utilisateur
    • Materialization : Apparition progressive par modulation de la courbure lumineuse

La philosophie de design

Apple définit clairement la hiérarchie :

“Liquid Glass is best reserved for the navigation layer that floats above the content of your app."”
— Apple, WWDC 2025

Le contenu reste au niveau de base, les contrôles glass flottent au-dessus. Cette séparation crée profondeur et hiérarchie visuelle.

Adoption automatique

Bonne nouvelle : en recompilant simplement avec Xcode 26, de nombreux éléments système adoptent automatiquement Liquid Glass.

iOS 26 — Éléments automatiques

    • NavigationBar, TabBar, Toolbar
    • Sheets, Popovers, Menus, Alerts
    • Search bars, Control Center
    • Toggles, Sliders, Pickers (pendant l'interaction)

macOS Tahoe — Éléments automatiques

    • Toolbar, Sidebar, Menu bar, Dock
    • Window controls, NSPopover, Sheets

L'API glassEffect

Signature de la fonction

Les types de Glass

Exemple basique

Tint et Interactive

Les modificateurs tint et interactive enrichissent l'effet :

Important : La teinte doit véhiculer une signification sémantique (action primaire, état), pas une simple décoration. Utilisez-la sélectivement pour les call-to-action.

GlassEffectContainer

Pourquoi un container ?

Le glass ne peut pas sampler un autre glass. GlassEffectContainer fournit une région de sampling partagée et permet aux éléments de fusionner visuellement quand ils se rapprochent.

Le paramètre spacing

Le spacing contrôle le seuil de morphing — les éléments à cette distance ou moins fusionnent visuellement :

Transitions fluides avec glassEffectID

Pour créer des animations de morphing entre états, utilisez glassEffectID avec un namespace :

Les boutons émergent du bouton principal et s'y réabsorbent grâce au morphing fluide !

Button Styles dédiés

iOS 26 introduit deux styles de boutons glass :

UIKit : UIGlassEffect

Pour les projets UIKit ou hybrides :

UIGlassContainerEffect pour le groupement

Best Practices

À FAIRE

À NE PAS FAIRE

Accessibilité

Respect automatique des préférences système

Le système gère automatiquement l'accessibilité, mais vous pouvez réagir si nécessaire :

Paramètres utilisateur iOS 26

Les utilisateurs peuvent ajuster Liquid Glass :

    • Réglages → Accessibilité → Affichage → Réduire la transparence : Fonds solides
    • Réglages → Accessibilité → Mouvement → Réduire les animations : Désactive le lensing
    • Réglages → Luminosité → Liquid Glass : Choisir Clear ou Tinted (iOS 26.1+)

Conseil : Laissez le système gérer l'accessibilité automatiquement. N'intervenez que si absolument nécessaire.

Rétrocompatibilité iOS 18 et antérieurs

Pour supporter les versions précédentes, créez un modificateur conditionnel :

Exemple complet : Lecteur de citations

Voici une application complète démontrant Liquid Glass :

Problèmes connus (iOS 26.0-26.1)

Interactive shape mismatch

Le modifier .glassEffect(.regular.interactive(), in: RoundedRectangle()) répond parfois avec une forme Capsule.

Workaround : Utilisez .buttonStyle(.glass) pour les boutons.

glassProminent avec cercle

Des artefacts de rendu peuvent apparaître avec .glassProminent et .circle.

Workaround :

Menu dans GlassEffectContainer

Sur iOS 26.1, placer un Menu dans un GlassEffectContainer peut casser l'animation de morphing.

Workaround : Évitez cette combinaison ou utilisez .glassEffect(.regular.interactive()) directement sur le Menu.

Ressources officielles

Pour aller plus loin

Liquid Glass représente bien plus qu'un changement esthétique — c'est une nouvelle façon de penser les interfaces. En respectant la hiérarchie contenu/navigation, en utilisant les containers appropriés et en testant l'accessibilité, vous créerez des applications qui s'intègrent naturellement dans l'écosystème iOS 26.

Les principes clés à retenir :

    • Navigation layer uniquement — jamais sur le contenu
    • Ne jamais empiler glass sur glass
    • Grouper avec GlassEffectContainer
    • Teinter sélectivement — actions primaires uniquement
    • Faire confiance au système — l'accessibilité est automatique

Dans un prochain article, nous explorerons Icon Composer, le nouvel outil Xcode pour créer des icônes Liquid Glass multicouches qui s'adaptent aux modes Light, Dark, Tinted et Clear.