WaterfallGrid

WaterfallGrid

SwiftUI瀑布流网格布局视图库

WaterfallGrid是一个SwiftUI瀑布流网格布局库,支持不规则内容、自定义列数、间距和填充。它提供水平或垂直滚动选项,适用于多种数据类型,并支持元素更新动画。该库简单易用,功能丰富,适合实现复杂的网格布局。

WaterfallGridSwiftUI网格布局自定义视图Swift包Github开源项目

WaterfallGrid

一个适用于SwiftUI的瀑布流网格布局视图。

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/2b54e442/d9daab67-aa93-4bfa-8e8f-a120c6404402.png" alt="Image Demo 1"/> </p>

特性

  • 不规则内容网格。
  • 根据设备方向可设置不同的列数。
  • 可自定义间距和网格内边距。
  • 水平或垂直滚动方向。
  • 可以为项目更新添加动画效果。

使用方法

初始化

你可以通过传递数据集合和为集合中每个元素提供视图的闭包来创建一个显示集合元素的网格。网格使用提供的闭包将集合中的每个元素转换为子视图。

WaterfallGrid适用于可识别的数据(类似于SwiftUI.List)。你可以通过两种方式使你的数据可识别:与数据一起传递一个能唯一标识每个元素的属性的键路径,或者让你的数据类型遵循Identifiable协议。

示例1

从通过键路径标识的数据集合创建一个Image类型视图的网格。

WaterfallGrid((0..<10), id: \.self) { index in Image("image\(index)") .resizable() .aspectRatio(contentMode: .fit) }

示例2

从Identifiable数据集合创建一个RectangleView类型视图的网格。

WaterfallGrid(rectangles) { rectangle in RectangleView(rectangle: rectangle) }

或者,对于简单情况,可以这样写:

WaterfallGrid(rectangles, content: RectangleView.init)

网格样式

要自定义网格的外观,调用gridStyle函数并传入你想要自定义的参数。

列数

WaterfallGrid(cards) { card in CardView(card: card) } .gridStyle(columns: 2)
WaterfallGrid(cards, content: CardView.init) .gridStyle( columnsInPortrait: 2, columnsInLandscape: 3 )

间距和内边距

WaterfallGrid(rectangles, content: RectangleView.init) .gridStyle(spacing: 8) .padding(EdgeInsets(top: 16, leading: 8, bottom: 16, trailing: 8))

动画

WaterfallGrid(rectangles, content: RectangleView.init) .gridStyle(animation: .easeInOut(duration: 0.5))

滚动行为

嵌入ScrollView和指示器选项

ScrollView(showsIndicators: true) { WaterfallGrid(rectangles, content: RectangleView.init) }

水平滚动方向

ScrollView(.horizontal) { WaterfallGrid(rectangles, content: RectangleView.init) .scrollOptions(direction: .horizontal) }
<p align="center"> <img src="https://yellow-cdn.veclightyear.com/2b54e442/c857cd22-3006-42b3-8808-fcd26169625f.gif" alt="Animation Demo 4"/> <img src="https://yellow-cdn.veclightyear.com/2b54e442/90eb04da-ccf6-4ad4-89f1-29ef090ccf43.gif" alt="Animation Demo 5"/> </p>

完整示例

ScrollView(.horizontal, showsIndicators: false) { WaterfallGrid(cards) { card in CardView(card: card) } .gridStyle( columnsInPortrait: 2, columnsInLandscape: 3, spacing: 8, animation: .easeInOut(duration: 0.5) ) .scrollOptions(direction: .horizontal) .padding(EdgeInsets(top: 16, leading: 8, bottom: 16, trailing: 8)) }

示例应用

探索WaterfallGridSample应用以获取更详细和交互式的示例。

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/2b54e442/c22cc9d8-8bcc-40d9-99d6-52aec2903509.gif" alt="Animation Demo 1" width="250"/>&nbsp; <img src="https://yellow-cdn.veclightyear.com/2b54e442/4e708137-9c3e-474f-9a8e-904e26c00aec.gif" alt="Animation Demo 2" width="250"/>&nbsp; <img src="https://yellow-cdn.veclightyear.com/2b54e442/dfbeb43e-3657-44d2-918a-a25876a6f586.gif" alt="Animation Demo 3" width="250"/> </p> <p align="center"> <img src="https://yellow-cdn.veclightyear.com/2b54e442/f068fb1c-805c-4f8f-ba29-e80a1bd7fb63.png" alt="Image Demo 3"/> </p> <p align="center"> <img src="https://yellow-cdn.veclightyear.com/2b54e442/3ed5c739-e664-40ca-b0a4-3722007398b8.png" alt="Image Demo 2"/> </p>

安装

Swift Package Manager

应用依赖

选择File > Swift Packages > Add Package Dependency,然后输入仓库URL(向你的应用添加包依赖

包依赖

在你的Package.swift清单中添加它作为依赖:

dependencies: [ .package(url: "https://github.com/paololeonardi/WaterfallGrid.git", from: "1.1.0") ]

CocoaPods

你可以通过在Podfile中添加以下行来通过CocoaPods安装WaterfallGrid:

pod 'WaterfallGrid', '~> 1.1.0'

运行pod install命令下载库并将其集成到你的Xcode项目中。

迁移指南

版本控制

有关可用版本,请参阅此仓库的发布版本

贡献

非常欢迎贡献。在提交拉取请求之前,请创建一个GitHub问题以计划和讨论实现。

作者

致谢

WaterfallGrid的灵感来自以下项目:

许可证

WaterfallGrid 可在 MIT 许可下使用。更多信息请查看 LICENSE 文件。

编辑推荐精选

Pixmax

Pixmax

一站式AI短剧创作平台

Pixmax专注打造下一代“ AI 视觉创作引擎”,整合行业顶尖 AI 大模型、工工业级精准控制及企业级协同管理功能,是全方位的 AI 内容创作平台。

豆包

豆包

字节跳动旗下 AI 智能助手

字节跳动旗下 AI 智能助手

GPT Plus|Pro充值

GPT Plus|Pro充值

GPT充值

支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。

GPT Image 2中文站

GPT Image 2中文站

AI 图片生成平台

GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。

Vecbase

Vecbase

你的AI Agent团队

Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

下拉加载更多