Guida Liquid Glass iOS

Guida Liquid Glass iOS

Guida Liquid Glass iOS

Un nuovo paradigma di design per lo sviluppo mobile

Indice

  1. Introduzione a Liquid Glass
  2. Caratteristiche tecniche e funzionalità utente
  3. Impatti per lo sviluppo nativo iOS
    • 3.1 Implementazione in SwiftUI
    • 3.2 Implementazione in UIKit
  4. Liquid Glass e sviluppo cross-platform
    • 4.1 Flutter e Liquid Glass
    • 4.2 .NET MAUI e Liquid Glass
  5. Best practices e considerazioni architetturali
  6. L’importanza della formazione continua nel team IT
  7. Conclusioni

1. Introduzione a Liquid Glass

Nel giugno 2025, durante il WWDC25, Apple ha annunciato quello che rappresenta il più significativo aggiornamento al design del software dalla presentazione di iOS 7 nel 2013: Liquid Glass. Questo nuovo linguaggio di design è stato introdotto con iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26 e tvOS 26, stabilendo per la prima volta un’esperienza visiva coerente su tutte le piattaforme Apple.

Liquid Glass non è semplicemente un restyling estetico, ma una completa reimpostazione concettuale del modo in cui gli utenti interagiscono con i dispositivi Apple. Come affermato da Alan Dye, Vice President of Human Interface Design di Apple: “Questo è il nostro aggiornamento più grande di sempre per il design del software”.

2. Caratteristiche tecniche e funzionalità utente

2.1 Fondamenti tecnici

Liquid Glass è un materiale digitale traslucido che combina le proprietà ottiche del vetro con la fluidità di un liquido. Le sue caratteristiche principali includono:

  • Rendering in tempo reale: utilizza tecnologie avanzate di grafica basate su Metal per effetti dinamici
  • Adattamento contestuale: il materiale modifica automaticamente il proprio colore in base al contenuto circostante
  • Riflessione e rifrazione: riflette e rifrange elementi vicini creando profondità visiva
  • Reattività al movimento: risponde dinamicamente alle interazioni dell’utente e al movimento del dispositivo

2.2 Impatto sull’esperienza utente

Per gli utenti finali, Liquid Glass introduce cambiamenti percettibili in diverse aree:

Barre dei pannelli dinamiche: in iOS 26, quando l’utente scorre i contenuti, le barre dei pannelli si riducono per dare spazio al contenuto, mantenendo comunque la navigazione sempre accessibile. Appena l’utente scorre verso l’alto, le barre si espandono fluidamente.

Elementi di controllo fluttuanti: pulsanti, interruttori, cursori e controlli multimediali sono ora realizzati in Liquid Glass e agiscono come un livello funzionale distinto che fluttua sopra le app.

Personalizzazione avanzata: Dock, icone delle app e widget sulla schermata Home sono tutti realizzati con vari strati di Liquid Glass, offrendo opzioni di personalizzazione senza precedenti.

Adattamento automatico: il sistema si adatta intelligentemente alla modalità chiara o scura, mantenendo sempre leggibilità e accessibilità ottimali.

3. Impatti per lo sviluppo nativo iOS

3.1 Implementazione in SwiftUI

Apple ha reso l’adozione di Liquid Glass relativamente semplice per gli sviluppatori SwiftUI attraverso API dedicate. Il modificatore principale è .glassEffect():

import SwiftUI

struct BasicGlassView: View {
    var body: some View {
        Text("Hello, Liquid Glass!")
            .padding()
            .glassEffect() // Default: .regular variant, .capsule shape
    }
}

Varianti del materiale Glass:

// Variante regular (default)
Text("Regular Glass")
    .padding()
    .glassEffect(.regular)

// Variante clear per maggiore trasparenza
Text("Clear Glass")
    .padding()
    .glassEffect(.clear)

// Con tinta personalizzata
Text("Tinted Glass")
    .padding()
    .glassEffect(.regular.tint(.blue))

// Con shape personalizzata
Text("Custom Shape")
    .padding()
    .glassEffect(.regular, in: .rect(cornerRadius: 16))

GlassEffectContainer per elementi coordinati:

struct CoordinatedGlassView: View {
    @Namespace private var glassID
    @State private var isExpanded = false
    
    var body: some View {
        GlassEffectContainer {
            VStack {
                Button("Action") {
                    withAnimation { isExpanded.toggle() }
                }
                .glassEffectID("button", in: glassID)
                
                if isExpanded {
                    Text("Details")
                        .glassEffectID("details", in: glassID)
                }
            }
        }
    }
}

Controlli interattivi:

Button("Interactive Button") {
    // action
}
.glassEffect(.regular.interactive())

3.2 Implementazione in UIKit

Per gli sviluppatori UIKit, Apple ha introdotto API corrispondenti che permettono di ottenere gli stessi effetti:

Utilizzo di UIGlassEffectView:

import UIKit

let glassView = UIGlassEffectView(effect: .glass)
glassView.frame = CGRect(x: 0, y: 0, width: 200, height: 60)
glassView.cornerRadius = 12
view.addSubview(glassView)

// Aggiungere contenuto
let label = UILabel()
label.text = "Liquid Glass"
label.textAlignment = .center
glassView.contentView.addSubview(label)

Configurazione avanzata:

// Glass tintato
let tintedGlass = UIGlassEffectView(effect: .glass)
tintedGlass.tintColor = .systemBlue
tintedGlass.tintAmount = 0.6

// Glass interattivo
let interactiveGlass = UIGlassEffectView(effect: .interactiveGlass)

Aggiornamento dei controlli esistenti:

La buona notizia è che molti controlli UIKit adottano automaticamente Liquid Glass quando l’app viene ricompilata con iOS 26 SDK. Tuttavia, per controlli personalizzati:

// UIBarButtonItem con glass appearance
let appearance = UIBarButtonItem.appearance()
appearance.setGlassAppearance(.regular)

// UISlider con tick marks (novità iOS 26)
let slider = UISlider()
let trackConfig = UISliderTrackConfiguration()
trackConfig.allowsTickValuesOnly = true
trackConfig.tickMarkPositions = [0.0, 0.25, 0.5, 0.75, 1.0]
slider.trackConfiguration = trackConfig

4. Liquid Glass e sviluppo cross-platform

4.1 Flutter e Liquid Glass

L’introduzione di Liquid Glass ha posto sfide significative per gli sviluppatori Flutter. A differenza di React Native che utilizza componenti nativi, Flutter usa il proprio motore di rendering (Skia/Impeller), il che significa che non eredita automaticamente il nuovo look di iOS 26.

Strategie di implementazione:

Approccio 1: Platform Views (Soluzione nativa)

import 'package:flutter/services.dart';

class LiquidGlassView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return UiKitView(
      viewType: 'liquidGlassView',
      creationParams: {'text': 'Hello Glass'},
      creationParamsCodec: const StandardMessageCodec(),
    );
  }
}

Lato Swift (AppDelegate.swift):

class LiquidGlassViewFactory: NSObject, FlutterPlatformViewFactory {
    func create(withFrame frame: CGRect, 
                viewIdentifier viewId: Int64, 
                arguments args: Any?) -> FlutterPlatformView {
        return LiquidGlassView(frame: frame, arguments: args)
    }
}

class LiquidGlassView: NSObject, FlutterPlatformView {
    private let glassView: UIView
    
    init(frame: CGRect, arguments args: Any?) {
        let glassEffect = UIGlassEffectView(effect: .glass)
        glassEffect.frame = frame
        self.glassView = glassEffect
        super.init()
    }
    
    func view() -> UIView {
        return glassView
    }
}

Approccio 2: Simulazione con BackdropFilter

import 'dart:ui';
import 'package:flutter/material.dart';

class GlassContainer extends StatelessWidget {
  final Widget child;
  final double blur;
  final Color tintColor;
  
  const GlassContainer({
    required this.child,
    this.blur = 10.0,
    this.tintColor = Colors.white,
  });
  
  @override
  Widget build(BuildContext context) {
    return ClipRRect(
      borderRadius: BorderRadius.circular(16),
      child: BackdropFilter(
        filter: ImageFilter.blur(sigmaX: blur, sigmaY: blur),
        child: Container(
          decoration: BoxDecoration(
            color: tintColor.withOpacity(0.2),
            borderRadius: BorderRadius.circular(16),
            border: Border.all(
              color: Colors.white.withOpacity(0.2),
            ),
          ),
          child: child,
        ),
      ),
    );
  }
}

Limitazioni attuali:

Secondo la issue ufficiale #170310 sul repository Flutter, il team ha annunciato che non svilupperà funzionalità Liquid Glass nella libreria Cupertino corrente. La community sta lavorando su soluzioni alternative e package dedicati.

4.2 .NET MAUI e Liquid Glass

Per gli sviluppatori .NET MAUI, la situazione è simile a Flutter ma con alcune particolarità.

Opt-out temporaneo:

Apple offre un flag di compatibilità temporaneo per dare tempo agli sviluppatori di adattarsi:

<!-- Info.plist -->
<key>UIDesignRequiresCompatibility</key>
<true/>

Nota importante: Questo flag è temporaneo e verrà rimosso probabilmente con iOS 27.

Implementazione con Syncfusion:

Syncfusion ha rilasciato supporto ufficiale per Liquid Glass in .NET MAUI (2025 Volume 4):

using Syncfusion.Maui.Core;

// Applicare effetto glass a controlli MAUI
var glassView = new SfGlassEffectView
{
    BlurStyle = BlurStyle.SystemMaterial,
    CornerRadius = 16,
    Content = new Label 
    { 
        Text = "Liquid Glass in MAUI",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    }
};

Implementazione custom con Platform Handlers:

#if IOS
using Microsoft.Maui.Handlers;
using UIKit;

public class GlassContentViewHandler : ContentViewHandler
{
    protected override ContentView CreatePlatformView()
    {
        var glassEffect = new UIGlassEffectView(UIGlassEffect.Glass);
        return glassEffect.ContentView;
    }
}

// Registrazione in MauiProgram.cs
builder.ConfigureMauiHandlers(handlers =>
{
    handlers.AddHandler<GlassContentView, GlassContentViewHandler>();
});
#endif

Sfide comuni con MAUI:

  • Flickering dei controlli Liquid Glass durante le transizioni
  • Problemi di colore con Shell.BackgroundColor non bianco
  • NavigationPage.TitleView non visualizzato correttamente su iPadOS 26

5. Best practices e considerazioni architetturali

5.1 Principi di design

Applicare Liquid Glass solo al layer di navigazione:

// CORRETTO: applicare a controlli che fluttuano sul contenuto
TabView {
    // contenuto
}
.glassEffect() // Corretto per la tab bar

// SCORRETTO: NON applicare al contenuto principale
List {
    // items
}
.glassEffect() // ❌ Evitare

Corner concentricity:

RoundedRectangle(cornerRadius: .containerConcentric)
    .fill(.blue)
    .frame(height: 60)

5.2 Performance

  • Liquid Glass utilizza rendering GPU-accelerato tramite Metal
  • Evitare di applicare .blur(), .opacity() o .background() sopra .glassEffect()
  • Su dispositivi meno recenti, considerare l’uso di .clear invece di .regular

5.3 Accessibilità

Liquid Glass rispetta automaticamente le impostazioni di sistema:

  • Reduce Transparency
  • Increase Contrast
  • Dark/Light Mode

Assicurarsi sempre di testare l’app con queste impostazioni abilitate.

6. L’importanza della formazione continua nel team IT

L’introduzione di Liquid Glass rappresenta un esempio perfetto di come il panorama tecnologico mobile sia in costante evoluzione. Per i team di sviluppo, rimanere aggiornati non è più un’opzione ma una necessità strategica per:

  • Evitare debito tecnico: app non aggiornate appariranno datate e non professionali su iOS 26+
  • Minimizzare errori di produzione: la conoscenza approfondita delle nuove API riduce bug e regressioni
  • Ottimizzare i tempi di sviluppo: team formati possono implementare nuove funzionalità più rapidamente
  • Mantenere competitività: utenti si aspettano app che sfruttino le ultime innovazioni della piattaforma

6.1 Formazione specialistica con Innovaformazione

Per affrontare queste sfide, Innovaformazione offre corsi specialistici progettati specificamente per team aziendali:

Corso iOS – Sviluppatore App Approfondimento completo su SwiftUI, UIKit e le nuove API iOS 26 e su richiesta si può trattare Liquid Glass.

Corso Flutter Sviluppo cross-platform con focus su integrazione nativa e Platform Channels per iOS 26. https://innovaformazione.net/corso/corso-flutter/

Corso MAUI .NET Sviluppo multipiattaforma con C# e gestione delle specifiche iOS 26.

Corso Android – Sviluppatore App Sviluppo nativo Android con Material Design 3 e Jetpack Compose.

6.2 Modalità di erogazione

Caratteristiche dei corsi:

  • Modalità: Online in classe virtuale con docenti esperti
  • Calendario flessibile: da concordare in base alle esigenze aziendali
  • Personalizzazione: contenuti adattabili alle specifiche necessità del team
  • Formato aziendale: esclusivamente per aziende, su richiesta

6.3 Finanziamenti Fondimpresa

Innovaformazione supporta le aziende nell’accesso ai progetti finanziati Fondimpresa, permettendo di ottenere la formazione gratuita per i dipendenti. Questo consente di:

  • Aggiornare competenze del team senza impatto sul budget
  • Accedere a formazione certificata e di qualità
  • Investire in capitale umano con supporto economico

Per richiedere un preventivo personalizzato:

  • Email: info@innovaformazione.net
  • Telefono: 3471012275 (Dario Carrassi)

7. Conclusioni – Guida Liquid Glass iOS

Liquid Glass rappresenta un punto di svolta nel design delle interfacce mobile, stabilendo un nuovo standard di fluidità, eleganza e reattività. Per gli sviluppatori iOS nativi, l’adozione è relativamente indolore grazie alle API ben progettate di Apple. Per gli sviluppatori cross-platform (Flutter, .NET MAUI), la transizione richiede maggiore attenzione e potenzialmente soluzioni ibride.

Indipendentemente dalla piattaforma di sviluppo, è fondamentale che i team IT investano nella formazione continua per:

  1. Comprendere a fondo i nuovi paradigmi di design
  2. Implementare correttamente le nuove API evitando antipattern
  3. Mantenere la competitività sul mercato
  4. Garantire app moderne e performanti agli utenti finali

L’investimento in formazione specialistica, come quella offerta da Innovaformazione, si traduce direttamente in riduzione di errori, accelerazione dello sviluppo e prodotti di qualità superiore.

(fonte) (fonte) (fonte) (fonte)

Ti potrebbe interessare

Articoli correlati