在SwiftUI上实现网格布局

什么是网格布局?



在开发应用程序界面时,我们通常会处理视觉元素的二维表示。有许多控件旨在标准化和简化布局。在Web开发概念方面,CSS工作组于2017年提出了Grid Layout作为创建2D UI模板的最佳方法。

图片

在iOS 13 SDK中,我们能够以列表的形式线性排列元素VStack,HStack,ZStack。但是,无法定义二维坐标系中元素排列的语义。因此,我们决定自己创建它。

在iOS 14中,Apple引入了其网格实现,我们将在下面的Apple LazyVGrid / LazyHGrid部分中进行讨论。



网格布局的接口示例



grid . , . Grid, UICollectionView, .

vertical_scroll

horizo​​ntal_scroll

, Grid Layout



Timetable



图片

, , . grid , . Spans grid item .

, .



Flipboard



图片

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





grid:

图片

grid , , . , .



, , tracks. . , , .



Grid, . .



, , , . .



, : .



, . , , . grid (dense) .



Grid , , . scroll fill.



.



, , .





ExyteGrid — Grid, SwiftUI. , ExyteGrid:



- Strava



, grid. Grid. , , spans .

图片



iOS



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

图片



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具有内容模式:.fill,在该模式下,网格可以排列项目以填充容器视图,而无需手动调整每个项目的大小。

    这两种实现的概念有些相似,但是在许多方面也有所不同。在Apple Grid的一侧有一个本机实现,着重于大量元素,在ExyteGrid的一侧有更多的功能和开源代码,每个人都可以参与其中。


很高兴看到您既是ExyteGrid存储库的用户又是他们的贡献者



当然,“路线图”部分中还有待完成的功能列表




All Articles