SwiftUIRefresh API参考:.pullToRefresh()修饰符参数详解、版本演进与使用注意事项
SwiftUIRefresh API参考:.pullToRefresh()修饰符参数详解、版本演进与使用注意事项
【免费下载链接】SwiftUIRefreshPull To Refresh for SwiftUI lists项目地址: https://gitcode.com/gh_mirrors/sw/SwiftUIRefresh
SwiftUIRefresh 是一款为 SwiftUI 列表提供原生下拉刷新(Pull To Refresh)能力的轻量级开源库。它的核心 API 是.pullToRefresh()视图修饰符——只需一行代码,就能让 SwiftUI 的List拥有和 UIKit 一样原生的UIRefreshControl下拉刷新体验,对新手非常友好。本文带你完整读懂它的参数、版本演进与常见坑点。
📌 演示动画展示了在 SwiftUI List 上触发
.pullToRefresh()后的原生下拉刷新效果。
SwiftUI 下拉刷新的实现原理(30秒看懂)
SwiftUI 原生并不直接暴露UIRefreshControl,SwiftUIRefresh 的巧妙之处在于"透视"视图层级:
- 借助 Introspect 库在视图层级中找到
List背后的UITableView; - 自动为其注入一个原生的
UIRefreshControl; - 用户下拉时触发回调,由你决定何时停止刷新。
核心实现代码位于 Sources/PullToRefresh.swift,对外只暴露一个修饰符:
extension View { func pullToRefresh(isShowing: Binding<Bool>, onRefresh: @escaping () -> Void) -> some View }.pullToRefresh() 修饰符参数详解
| 参数 | 类型 | 说明 |
|---|---|---|
isShowing | Binding<Bool> | 双向绑定,控制刷新控件的"转圈"状态。为true时开始刷新,为false时停止 |
onRefresh | () -> Void | 用户下拉触发的回调,在这里发起你的网络请求 |
💡 一句话记忆:isShowing管"转不转",onRefresh管"干不干活"。
最快上手:10行代码接入 SwiftUI 下拉刷新
import SwiftUI import SwiftUIRefresh struct ContentView: View { @State private var isShowing = false var body: some View { List { Text("Item 1") Text("Item 2") } .pullToRefresh(isShowing: $isShowing) { // 发起网络请求,完成后将 isShowing 置为 false DispatchQueue.main.asyncAfter(deadline: .now() + 1) { isShowing = false } } } }完整可运行的示例在 Examples/ContentView.swift,可直接对照学习。
SwiftUIRefresh 版本演进:升级前必看
版本历史记录在 CHANGELOG.md,关键节点如下:
- 0.0.1— 首个版本,以
PullToRefresh(...)视图方式使用; - 0.0.2— ⚠️破坏性变更:改用
.pullToRefresh(...)修饰符,同时修复了下拉刷新与大标题(Large Title)布局冲突的 Bug; - 0.0.3— 当前 CocoaPods 发布版本,见 SwiftUIRefresh.podspec。
🔔 如果你还在用 0.0.1 的写法(直接写PullToRefresh视图),升级到 0.0.2+ 后必须改为修饰符写法,否则编译会失败。
SwiftUI 下拉刷新使用注意事项清单
✅ 这些坑帮你提前避掉:
- 必须挂在
List上——修饰符靠查找底层UITableView工作,挂在ScrollView上无效; - 别忘了停止刷新——请求完成后务必把
isShowing置回false,否则转圈永不消失; - iOS 13 起步——Package.swift 声明了
iOS(.v13)最低版本要求; - 依赖 Introspect——库通过视图层级透视工作,若未来 SwiftUI 内部结构变化,升级依赖版本即可适配(这正是 0.0.2 抽象注入方式的目的)。
安装方式:SwiftUIRefresh 一键安装步骤
方式一:SwiftPM(推荐)
在 Xcode 中File → Add Packages,添加仓库地址即可。
方式二:CocoaPods
pod "SwiftUIRefresh"方式三:直接克隆源码
git clone https://gitcode.com/gh_mirrors/sw/SwiftUIRefresh克隆后导入Sources目录源码即可编译,许可证为 MIT,可放心用于商业项目。
小结
SwiftUIRefresh 用极小的代码量(核心仅一个 Swift 文件)实现了原生体验的 SwiftUI 下拉刷新:.pullToRefresh(isShowing:onRefresh:)两个参数各司其职,掌握"请求结束置false"这一要点即可避坑。升级时留意 0.0.2 的修饰符写法变更,你就能安心使用这个好用的 SwiftUI 下拉刷新方案。
【免费下载链接】SwiftUIRefreshPull To Refresh for SwiftUI lists项目地址: https://gitcode.com/gh_mirrors/sw/SwiftUIRefresh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
