Más control sobre las toolbars en SwiftUI
Arturo Rivas Arias
SwiftUI siempre ha apostado por que las barras de herramientas se adapten automáticamente a cada plataforma. El mismo código puede distribuir los elementos de forma distinta en iPhone, iPad o Mac para ofrecer la mejor experiencia posible. Sin embargo, esa flexibilidad también supone perder cierto control sobre qué acciones permanecen visibles y cuáles terminan ocultas.
Con SwiftUI en Xcode 27 llegan varias APIs que permiten ajustar ese comportamiento sin renunciar a la adaptación automática del sistema.
Prioriza los elementos más importantes
El nuevo modificador visibilityPriority(_:) permite indicar qué elementos deberían mantenerse visibles cuando no existe espacio suficiente.
En lugar de dejar que SwiftUI decida por completo qué acciones mover al menú de desbordamiento, puedes asignar prioridades como .high, .automatic o .low.
Un ejemplo práctico sería una aplicación de tareas donde el botón Añadir siempre debería permanecer visible, mientras que acciones como Duplicar o Exportar podrían ocultarse si el espacio es limitado.
.toolbar {
ToolbarItem(placement: .primaryAction) {
Button("Añadir") {
createTask()
}
}
.visibilityPriority(.high)
ToolbarItemGroup {
Button("Duplicar") { }
Button("Exportar") { }
}
}
Crear un menú de desbordamiento de forma explícita
Hasta ahora era SwiftUI quien decidía qué elementos ocultar. Con el componente ToolbarOverflowMenu podemos indicar directamente qué acciones deben vivir siempre dentro de un menú.
Esto resulta útil para las funcionalidades secundarias que no necesitan ocupar espacio en la barra principal.
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
Button("Guardar") {
save()
}
}
ToolbarOverflowMenu {
Button("Exportar") { }
Button("Compartir") { }
Button("Eliminar") { }
}
}
El comportamiento es además consistente entre plataformas, evitando diferencias inesperadas entre iOS, iPadOS y macOS.
Fijar acciones importantes
Otra incorporación interesante es un nuevo placement llamado .topBarPinnedTrailing.
Su objetivo es mantener un botón anclado al extremo derecho de la barra siempre que exista espacio suficiente, incluso cuando otros elementos puedan desplazarse al menú de desbordamiento.
Es una buena opción para acciones frecuentes como Crear, Guardar o Buscar.
Ocultar barras durante el desplazamiento
Por último, toolbarMinimizeBehavior permite minimizar automáticamente determinadas barras mientras el usuario navega por el contenido.
.toolbarMinimizeBehavior(
.onScrollDown,
for: .navigationBar
)
La API también funciona con barras inferiores, pestañas y ventanas, ayudando a aprovechar mejor el espacio disponible en pantalla.
Conclusión
Estas novedades no sustituyen el comportamiento adaptativo de SwiftUI, sino que permiten ajustarlo cuando la interfaz lo necesita. Gracias a visibilityPriority, ToolbarOverflowMenu, topBarPinnedTrailing y toolbarMinimizeBehavior, ahora es mucho más sencillo decidir qué acciones deben permanecer visibles, cuáles pueden agruparse y cómo debe reaccionar la interfaz durante la navegación.
Son pequeños cambios, pero aportan un nivel de control que hasta ahora resultaba complicado conseguir sin recurrir a soluciones específicas para cada plataforma.