Implementación del diseño de cuadrícula en SwiftUI

¿Qué es el diseño de cuadrícula?



Cuando desarrollamos una interfaz de aplicación, la mayoría de las veces nos ocupamos de una representación bidimensional de elementos visuales. Hay muchos controles diseñados para estandarizar y simplificar el diseño. En términos de conceptos de desarrollo web, el Grupo de Trabajo de CSS propuso Grid Layout en 2017 como la mejor manera de crear plantillas de UI 2D.

imagen

En iOS 13 SDK, tenemos la capacidad de organizar elementos linealmente VStack, HStack, ZStack, en forma de lista: List. Pero no hay forma de definir la semántica de la disposición de los elementos en un sistema de coordenadas bidimensional. Así que decidimos crearlo nosotros mismos.

En iOS 14, Apple presentó su implementación de cuadrícula, que discutiremos a continuación en la sección Apple LazyVGrid / LazyHGrid.



Ejemplos de interfaces con diseño de cuadrícula



grid . , . Grid, UICollectionView, .

vertical_scroll

desplazamiento_horizontal

, Grid Layout



Timetable



imagen

, , . grid , . Spans grid item .

, .



Flipboard



imagen

, , . , — . Grid Layout , grid flow .rows .columns.





grid:

imagen

grid , , . , .



, , tracks. . , , .



Grid, . .



, , , . .



, : .



, . , , . grid (dense) .



Grid , , . scroll fill.



.



, , .





ExyteGrid — Grid, SwiftUI. , ExyteGrid:



- Strava



, grid. Grid. , , spans .

imagen



iOS



iOS? , grid, grid item. ExyteGrid layout, . SwiftUI grid.

imagen



Apple LazyVGrid/LazyHGrid



Apple LazyVGrid LazyVGrid iOS 14, ExyteGrid :



  • Apple span . / .
  • grid: / .
  • ExyteGrid (grid packing): sparse, dense, , , .
  • Apple Grid fade , ForEach. ExyteGrid , ID grid. ID GridGroup ForEach, SwiftUI (transition) .
  • . Flexible Apple Grid , , .fr ExyteGrid .
  • .adaptive Apple Grid .fit . Adaptive . , . Fit ExyteGrid , , .
  • ExyteGrid gridCellOverlay gridCellBackground, custom view , . .
  • Apple Grid , , ExyteGrid .
  • ExyteGrid tiene un modo de contenido: .fill donde la cuadrícula organiza los elementos para llenar la vista del contenedor sin tener que calcular manualmente el tamaño de cada elemento.

    Los conceptos de estas dos implementaciones son algo similares, pero en muchos aspectos son diferentes. En el lado de Apple Grid hay una implementación nativa, se enfoca en una gran cantidad de elementos, y en el lado de ExyteGrid, más funcionalidad y código fuente abierto, en el desarrollo del cual cualquiera puede participar.


Me alegro de verlos como usuarios y como contribuyentes del repositorio de la biblioteca ExyteGrid .



Por supuesto, hay una lista de características que aún no se han realizado en la sección de la hoja de ruta .




All Articles