Tutoriales de SwiftUI y Swift para iOS Developers - PROGRAMACIONSWIFT.COM

Liquid Glass Toolbar en SwiftUI

Cómo aplicar el efecto Liquid Glass a una Toolbar en SwiftUI desde iOS 26

La llegada de iOS 26 introduce importantes novedades visuales para los desarrolladores que utilizan SwiftUI. Una de las más destacadas es Liquid Glass, el nuevo lenguaje de diseño que aporta una apariencia más dinámica, translúcida y adaptable a los elementos de la interfaz. Para cualquier iOS Developer, aprender a integrar este nuevo efecto en componentes como las barras de herramientas resulta fundamental para crear aplicaciones modernas y preparadas para las nuevas versiones de los sistemas operativos de Apple.

En este tutorial veremos cómo crear una Liquid Glass Toolbar en SwiftUI, cómo aplicar sus principales modificadores y cómo reutilizar esta interfaz en proyectos desarrollados con Swift para iOS, macOS y watchOS utilizando Xcode.

El objetivo es que puedas incorporar este nuevo estilo visual a tus aplicaciones mediante código SwiftUI limpio, moderno y fácilmente reutilizable.

¿Qué es Liquid Glass?

Liquid Glass es el nuevo lenguaje visual introducido por Apple para sus sistemas operativos más recientes. Su objetivo es crear interfaces que parezcan más vivas y adaptables, utilizando materiales translúcidos, profundidad, reflejos y cambios dinámicos dependiendo del contenido que se encuentre detrás.

A diferencia de los diseños tradicionales basados únicamente en colores sólidos, Liquid Glass permite que determinados elementos de la interfaz se integren mejor con su entorno. Las barras de navegación, las toolbars, los botones y otros controles pueden adoptar una apariencia más ligera y dinámica.

Para un iOS Developer, esto supone una evolución importante en la forma de diseñar interfaces con SwiftUI. En lugar de crear manualmente efectos de transparencia, sombras y desenfoque, el framework ofrece nuevas herramientas para aplicar este estilo de forma nativa.

Una de las aplicaciones más interesantes es la creación de una Liquid Glass Toolbar en SwiftUI.

Crear un proyecto en Xcode

Para comenzar, abre Xcode y crea un nuevo proyecto utilizando la plantilla App.

Selecciona:

  • Interface: SwiftUI
  • Language: Swift
  • Platform: iOS
  • Deployment Target: iOS 26 o posterior

Una vez creado el proyecto, abre el archivo principal de la aplicación. En este ejemplo utilizaremos una interfaz sencilla basada en NavigationStack.

El código inicial podría ser el siguiente:

import SwiftUI

struct ContentView: View {
    
    var body: some View {
        NavigationStack {
            Text("Mi aplicación")
                .navigationTitle("Inicio")
        }
    }
}

Crear una Toolbar tradicional en SwiftUI

Antes de aplicar Liquid Glass, es importante entender cómo funciona una toolbar estándar en SwiftUI.

Podemos añadir botones utilizando el modificador .toolbar:

struct ContentView: View {
    
    var body: some View {
        NavigationStack {
            Text("Mi aplicación")
                .navigationTitle("Inicio")
                .toolbar {
                    ToolbarItem(placement: .topBarTrailing) {
                        Button {
                            print("Botón pulsado")
                        } label: {
                            Image(systemName: "gear")
                        }
                    }
                }
        }
    }
}

Este código añade un botón con un icono de configuración en la parte superior derecha de la pantalla.

En versiones anteriores de SwiftUI, el aspecto de la toolbar dependía principalmente del sistema operativo y de los materiales disponibles. Con iOS 26, Apple proporciona nuevas APIs para adaptar los controles al nuevo lenguaje visual Liquid Glass.

Aplicar Liquid Glass a una Toolbar

La idea principal consiste en utilizar los nuevos modificadores relacionados con el material Liquid Glass sobre los elementos que forman parte de la interfaz.

Un ejemplo básico podría ser:

import SwiftUI

struct ContentView: View {
    
    var body: some View {
        NavigationStack {
            VStack(spacing: 20) {
                Text("Liquid Glass")
                    .font(.largeTitle)
                    .fontWeight(.bold)
                
                Text("Una interfaz moderna creada con SwiftUI")
                    .foregroundStyle(.secondary)
            }
            .navigationTitle("Inicio")
            .toolbar {
                ToolbarItem(placement: .topBarTrailing) {
                    Button {
                        print("Configuración")
                    } label: {
                        Image(systemName: "gear")
                    }
                    .glassEffect()
                }
            }
        }
    }
}

El modificador .glassEffect() permite aplicar la apariencia Liquid Glass a un elemento compatible.

Este tipo de API simplifica considerablemente el trabajo del desarrollador. En lugar de construir manualmente una combinación de Material, transparencias, sombras y fondos, el sistema se encarga de adaptar el efecto a las características de la plataforma.

Crear una Liquid Glass Toolbar con varios botones

Una toolbar puede contener más de un elemento. En este caso, es recomendable agrupar los controles que forman parte de la misma acción visual.

Por ejemplo:

.toolbar {
    ToolbarItemGroup(placement: .topBarTrailing) {
        
        Button {
            print("Buscar")
        } label: {
            Image(systemName: "magnifyingglass")
        }
        
        Button {
            print("Compartir")
        } label: {
            Image(systemName: "square.and.arrow.up")
        }
        
        Button {
            print("Configuración")
        } label: {
            Image(systemName: "gear")
        }
    }
}

En una interfaz compatible con Liquid Glass, estos controles pueden integrarse visualmente dentro del nuevo sistema de materiales.

Una buena práctica en SwiftUI consiste en no aplicar demasiados efectos visuales individualmente cuando los controles forman parte de un mismo grupo. El sistema puede ofrecer una composición más coherente cuando los elementos se presentan como una unidad.

Personalizar el aspecto de los elementos

Una de las ventajas de Liquid Glass es que no se limita a un simple efecto de transparencia. Los elementos pueden reaccionar visualmente al contenido que tienen detrás.

Podemos crear un botón reutilizable:

struct GlassToolbarButton: View {
    
    let systemImage: String
    let action: () -> Void
    
    var body: some View {
        Button(action: action) {
            Image(systemName: systemImage)
                .font(.headline)
        }
        .glassEffect()
    }
}

Después podemos utilizarlo desde la toolbar:

.toolbar {
    ToolbarItemGroup(placement: .topBarTrailing) {
        
        GlassToolbarButton(systemImage: "magnifyingglass") {
            print("Buscar")
        }
        
        GlassToolbarButton(systemImage: "gear") {
            print("Configuración")
        }
    }
}

Esta aproximación resulta especialmente interesante para un iOS Developer que trabaja en proyectos grandes. La interfaz queda más organizada y es posible reutilizar los mismos componentes en diferentes pantallas.

Crear una Toolbar con acciones dinámicas

Una toolbar moderna normalmente necesita reaccionar al estado de la aplicación.

Por ejemplo, podemos crear un botón que cambie dependiendo de si un elemento está seleccionado:

struct ContentView: View {
    
    @State private var isFavorite = false
    
    var body: some View {
        NavigationStack {
            Text("Contenido")
                .navigationTitle("Detalle")
                .toolbar {
                    ToolbarItem(placement: .topBarTrailing) {
                        Button {
                            isFavorite.toggle()
                        } label: {
                            Image(systemName: isFavorite
                                      ? "star.fill"
                                      : "star")
                        }
                        .glassEffect()
                    }
                }
        }
    }
}

Gracias a @State, la interfaz se actualiza automáticamente cuando cambia el valor de isFavorite.

Esta es una de las principales ventajas de SwiftUI frente a los sistemas de interfaz tradicionales: el estado de la aplicación y la representación visual están directamente conectados.

Liquid Glass y compatibilidad entre plataformas

Uno de los aspectos más interesantes de esta tecnología es que puede utilizarse en diferentes plataformas de Apple.

  • iOS
  • iPadOS
  • macOS
  • watchOS

El código de Swift y SwiftUI puede reutilizarse en gran medida, aunque la posición y el comportamiento de las toolbars pueden cambiar dependiendo del dispositivo.

Por ejemplo:

struct SharedToolbar: ToolbarContent {
    
    var body: some ToolbarContent {
        ToolbarItem {
            Button {
                print("Acción")
            } label: {
                Image(systemName: "plus")
            }
        }
    }
}

Este componente puede utilizarse en diferentes vistas:

.toolbar {
    SharedToolbar()
}

La ventaja es que podemos crear una experiencia visual coherente sin duplicar toda la lógica de la aplicación.

En macOS, una toolbar puede tener más espacio horizontal y diferentes ubicaciones. En watchOS, el espacio disponible es mucho más limitado. Por este motivo, aunque el código sea compartido, el diseño debe adaptarse a cada plataforma.

Utilizar #available para controlar la compatibilidad

Si tu aplicación también es compatible con versiones anteriores de iOS, es importante comprobar la disponibilidad de las APIs de Liquid Glass.

Podemos utilizar:

if #available(iOS 26, *) {
    // Código compatible con Liquid Glass
} else {
    // Interfaz alternativa
}

En una aplicación real, también puedes crear una vista que utilice una implementación diferente dependiendo de la versión disponible.

Por ejemplo:

struct ModernToolbarButton: View {
    
    let action: () -> Void
    
    var body: some View {
        Button(action: action) {
            Image(systemName: "plus")
        }
        .modifier(GlassModifier())
    }
}

El modificador podría encargarse de aplicar el estilo adecuado según la versión disponible.

Esta estrategia es especialmente importante en aplicaciones comerciales que todavía mantienen compatibilidad con varias generaciones de iPhone.

Buenas prácticas al utilizar Liquid Glass

Aunque Liquid Glass permite crear interfaces visualmente atractivas, no conviene aplicar efectos de forma excesiva.

Utiliza el efecto para destacar acciones

Los botones principales pueden beneficiarse de la apariencia Liquid Glass. Sin embargo, una toolbar llena de elementos visuales puede resultar confusa.

Mantén una jerarquía visual

Las acciones más importantes deben ser fácilmente identificables. El nuevo material no debe sustituir a una buena estructura de navegación.

Comprueba el contraste

La transparencia puede afectar a la legibilidad. Es importante probar la aplicación con diferentes fondos y condiciones de accesibilidad.

Prueba diferentes dispositivos

Una interfaz que funciona correctamente en un iPhone puede necesitar ajustes en iPad, Mac o Apple Watch.

No dependas únicamente del aspecto visual

El diseño debe seguir siendo usable incluso si el usuario activa opciones de accesibilidad o reduce determinados efectos visuales.

Conclusión

La llegada de Liquid Glass abre nuevas posibilidades para el desarrollo de interfaces modernas con SwiftUI. Para cualquier iOS Developer, aprender a crear una Liquid Glass Toolbar en SwiftUI es una excelente forma de aprovechar las nuevas capacidades visuales de iOS 26.

Gracias a las nuevas APIs, podemos crear toolbars con una apariencia más dinámica, integrada y adaptada al contenido de la aplicación sin tener que construir manualmente todos los efectos de transparencia y profundidad.

Además, el uso de componentes reutilizables permite compartir gran parte del código entre iOS, macOS y watchOS. Combinando Swift, SwiftUI y Xcode, los desarrolladores pueden crear aplicaciones multiplataforma con una base de código moderna y una experiencia visual coherente.

Si estás aprendiendo programación Swift o desarrollando aplicaciones profesionales para el ecosistema Apple, iOS 26 y Liquid Glass representan una oportunidad para revisar tus interfaces y adaptarlas al nuevo lenguaje de diseño de Apple. La clave está en utilizar el efecto con moderación, mantener una buena jerarquía visual y aprovechar la potencia declarativa de SwiftUI para crear componentes reutilizables y fáciles de mantener.

Visited 1 times, 1 visit(s) today
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Article

Efecto Neón en SwiftUI

Related Posts