For the complete documentation index, see llms.txt. This page is also available as Markdown.

Desplazamiento y cuadrícula


Las vistas desplazables y las cuadrículas facilitan la creación de inventarios, listas, menús y diseños de tarjetas. Esta guía muestra los patrones correctos para ambas, incluyendo diseño, IDs y barras de desplazamiento.

Siga los fundamentos de la UI: comience desde los rectángulos de pantalla, use cut para el diseño y use siempre defer para pares push/pop.

Vistas desplazables

Use vistas desplazables para contenido que puede exceder el espacio disponible. La barra de desplazamiento debe estar fuera del área de contenido de la vista desplazable.

draw_scrollable_list :: proc(items: []string) {
    rect := UI.get_safe_screen_rect().inset(50);

    // Reserve espacio para la barra de desplazamiento primero
    scroll_bar_area := rect.cut_right(8).inset(2);

    settings: Scroll_View_Settings;
    settings.vertical = true;
    settings.horizontal = false;
    settings.clip_padding = {10, 10, 10, 10};

    sv := UI.push_scroll_view(rect, "my_scroll_view", settings); {
        defer UI.pop_scroll_view();

        content := sv.content_rect;
        ts := UI.default_text_settings();
        ts.size = 24;

        for i: 0..<items.count {
            item_rect := content.cut_top(40);
            UI.text(item_rect, ts, items[i]);
        }
    }

    scroll_bar_rect := sv.compute_scroll_bar_rect(scroll_bar_area);

    UI.quad(scroll_bar_area, core_globals.white_sprite, {0.025, 0.025, 0.025, 1});
    UI.quad(scroll_bar_rect, core_globals.white_sprite, {0.1, 0.1, 0.1, 1});
}

Importante: Si la barra de desplazamiento está dentro del contenido de la vista desplazable, romperá los límites y el comportamiento del desplazamiento. Siempre recorte primero el área de la barra de desplazamiento.

Diseño de cuadrícula

Usa Grid_Layout para elementos del mismo tamaño, como ranuras de inventario o cuadrículas de iconos. Las cuadrículas comienzan en la esquina superior izquierda, avanzan hacia la derecha y luego pasan a la siguiente fila.

Si prefieres mosaicos de tamaño fijo, usa .ELEMENT_SIZE en lugar de .ELEMENT_COUNT:

El next() método actualiza el estado de la cuadrícula:

Cuadrículas desplazables

Grid_Layout expande automáticamente las vistas desplazables cuando se usa dentro de una. Este patrón es ideal para inventarios grandes:

Buenas prácticas

  • Usa UI.push_id() para elementos repetidos dentro de listas o cuadrículas.

  • Recorte el área de la barra de desplazamiento antes de crear una vista desplazable.

  • Comience desde UI.get_safe_screen_rect() y derive todo el diseño.

  • Mantenga al mínimo las interacciones solo al pasar el cursor (prioridad móvil).

Última actualización