Lista de SwiftUI con múltiples columnas

Aug 21 2020

Estoy buscando el equivalente de un bloque en línea html en swiftui. Básicamente, quiero que funcione exactamente como la lista, pero solo ajuste si va a exceder la línea, por ejemplo

WrappingList( items ) {
    Text( "item.name") 
}

pero lo estoy encontrando mucho más difícil de lo que pensaba. Realmente quiero que la lista de cosas traiga a la mesa, es decir, actualizaciones incrementales y desplazamiento, pero no puedo encontrar una manera de mapearlo en el estilo declarativo rápido. En los idiomas en los que agregó controles de forma procesal, es trivial:

current_x = 0
current_y = 0
foreach (var item in items ) 
{
    control = create_control_for( item )
    biggest_y = max( current_y + control.height, biggest_y)
    if (control.width + current_x > width) 
    {
        current_x=0;
        current_y = biggest_y;
    }
    control.position = (current_x, current_y)
}

pero Swift parece querer hacer cosas en hstacks o vstacks y realmente no sé cómo hacerlo y aún así mantener las propiedades de una lista, particularmente sin saber el tamaño de las cosas de antemano, es decir, no quiero una cuadrícula fija .

¿Ya existe esa funcionalidad? Si no, ¿hay alguna forma de mapear la línea de código anterior en SwiftUI?

Respuestas

DarrenOakey Sep 15 2020 at 08:15

solo para que haya una respuesta aquí: el comentario anterior de asperi funcionó muy bien, vinculando a este artículo de desbordamiento de pila