SpanGrid

SpanGrid 是一个增强型的 SwiftUI LazyVGrid,它支持许多额外的特性。

A basic example output of a SpanGrid with four cells reading the sentence: Welcome to SpanGrid! The latest in SwiftUI grid goodness.

兼容性

特性

列跨度

数据源中的所有项目必须符合 SpanGridSizeInfoProvider 协议。此协议为你的数据添加了一个参数,该参数告知网格应填充多少列。

选项包括

如果单元格无法容纳在一行的剩余空间中,则它将创建一个新行,并在前一个行上留下空白。

行大小策略

当为每个单元格返回自定义视图时,它将附带一个元数据模型。 该模型将包含诸如行计算高度之类的信息。 在我们尚未计算它的情况下,此值也可能为 nil

选项包括

列大小策略

可以采用多种方法计算单列的宽度、列数和列之间的空间。

选项包括

键盘导航(选择加入)

这允许用户使用连接的键盘(iPadOS)在行/项目之间导航。

由于 Apple 的限制,我们目前使用 WASD 键而不是方向键。 我们希望将来会改变。

在实例化 SpanGrid 时,你可以传递键盘导航选项,其中包括启用该功能,以及启用/禁用键盘可发现性和向用户显示的本地化字符串(仅提供默认的英语字符串)。

注意

我并不保证自己是 SwiftUI 方面的专家,因此当前实现可能存在许多问题。 我已尽我所能对其进行了测试,并且没有发现性能或功能方面的实际问题。 欢迎提出问题或发起请求,其中包含增强功能、错误修复、想法等。

Jordan,无论你说多少次,这个项目都**不**叫 Spandex。