TTGSnackbar 生命周期回调详解:从 willShow 到 didDismiss 的完整流程
TTGSnackbar 生命周期回调详解从 willShow 到 didDismiss 的完整流程【免费下载链接】TTGSnackbarTTGSnackbar shows simple message and action button on the bottom or top of the screen with multi kinds of animation, which is written in Swift and inspired by Snackbar in Android. It also support showing custom view, icon image or multi action button.项目地址: https://gitcode.com/gh_mirrors/tt/TTGSnackbar如果你正在为 iOS 应用寻找一款轻量又好用的 Swift 提示组件TTGSnackbar 一定不会让你失望。这个开源库深受 Android Snackbar 启发支持在屏幕底部或顶部展示消息与操作按钮并内置多种动画效果。而要想把消息提示做得专业理解它的生命周期回调是必经之路。本文将带你完整梳理 TTGSnackbar 从 willShow 到 didDismiss 的四大回调时机并给出实用的 Swift 代码示例。什么是 TTGSnackbar 生命周期回调简单来说TTGSnackbar 在「展示前 → 展示完成 → 关闭前 → 关闭完成」四个关键时刻分别开放了四个回调闭包让你能够精准插入自己的业务逻辑回调名称触发时机典型用途willShowBlock即将开始展示动画前埋点统计、准备数据didShowBlock展示动画播放完成后开始后续任务、通知 UIwillDismissBlock即将开始关闭动画前记录展示时长、回收资源didDismissBlock移除出视图层级后清理状态、串联下一条提示这四个回调都定义在 TTGSnackbar.swift 中类型统一为TTGLifecycleBlock签名都接收TTGSnackbar自身实例使用起来非常统一。生命周期完整流程一条消息的一生第一步willShowBlock —— 展示前的准备时机当你调用snackbar.show()时TTGSnackbar 会先完成视图约束的搭建详见 TTGSnackbarPresentation.swift 中的show()方法随后立即触发willShowBlock最后才播放入场动画。这意味着你可以在 willShow 阶段做动画开始前的一切事情比如snackbar.willShowBlock { snackbar in print(提示即将出现\(snackbar.message)) Analytics.track(snackbar_will_show) }第二步didShowBlock —— 入场动画完成后的黄金时机入场动画播放完毕后didShowBlock被触发。此时 Snackbar 已完整可见非常适合处理提示出现后的业务比如开始一个耗时任务snackbar.didShowBlock { snackbar in print(提示已完全展示开始上传文件…) startUploadTask() }第三步willDismissBlock —— 关闭前的最后一次机会当展示时长耗尽、用户点击操作按钮或代码主动调用dismiss()时TTGSnackbar 会先调用willDismissBlock再执行关闭动画。这里适合做数据回收与状态记录snackbar.willDismissBlock { snackbar in let duration Date().timeIntervalSince(showTime) print(提示即将关闭已展示 \(duration) 秒) }第四步didDismissBlock —— 完整谢幕与队列接力关闭动画结束后Snackbar 被移出视图层级此时触发didDismissBlock。这是四个回调中最常用的一个因为 TTGSnackbarManager 正是通过它来实现消息队列的自动接力见 TTGSnackbarManager.swift当前提示关闭后立刻从队列中取出下一条继续展示。snackbar.didDismissBlock { snackbar in print(提示已完全关闭可以展示下一条了) showNextSnackbar() }生命周期回调的三个实战技巧技巧一搭配操作按钮实现动作后关闭结合actionBlock与生命周期回调可以轻松实现用户点击操作按钮后先执行逻辑再关闭提示的交互let snackbar TTGSnackbar( message: 文件已删除, duration: .short, actionText: 撤销 ) snackbar.actionBlock { snackbar in restoreFile() snackbar.dismiss() } snackbar.willDismissBlock { snackbar in print(撤销操作已处理提示即将关闭) } snackbar.show()技巧二用 didDismissBlock 串联加载状态提示在耗时操作场景中可以先用didShowBlock展示加载中的提示style .loading任务完成后关闭它再用didDismissBlock弹出成功或失败的结果提示let loading TTGSnackbar(message: 正在同步…, duration: .forever, style: .loading) loading.didDismissBlock { _ in TTGSnackbar(message: 同步成功, duration: .short, style: .success).show() } loading.show() // 任务完成后手动关闭 DispatchQueue.main.asyncAfter(deadline: .now() 2) { loading.dismiss() }技巧三利用队列策略自动管理多条提示当多条提示密集出现时不必手动处理关闭逻辑。TTGSnackbarManager提供了三种展示策略enqueue排队、replaceCurrent替换当前、dropIfShowingSameMessage去重队列的自动切换正是基于didDismissBlock实现的TTGSnackbarManager.shared.show(snackbar: snackbarA) // 先展示 A TTGSnackbarManager.shared.show(snackbar: snackbarB) // B 自动排队 TTGSnackbarManager.shared.show(snackbar: snackbarC) // C 继续排队 // A 关闭后自动展示 BB 关闭后自动展示 C小结一张图看懂生命周期回顾整个流程调用show()→willShowBlock→ 入场动画 →didShowBlock→ 展示等待 → 触发关闭 →willDismissBlock→ 退场动画 → 移除视图 →didDismissBlock。理解并善用这四大生命周期回调你就能精确控制提示的每一个环节从埋点统计、资源准备到动画衔接与队列接力让 TTGSnackbar 在你的 iOS 应用中发挥最大价值。快打开你的项目试试这套完整的生命周期回调吧【免费下载链接】TTGSnackbarTTGSnackbar shows simple message and action button on the bottom or top of the screen with multi kinds of animation, which is written in Swift and inspired by Snackbar in Android. It also support showing custom view, icon image or multi action button.项目地址: https://gitcode.com/gh_mirrors/tt/TTGSnackbar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考