当前位置: 首页 > news >正文

Swift withAnimation 动画完成监听

在ios17中withAnimation有completion方法可以监听动画完成,但是低于ios17没有,需要自定义一个监听器,原理就是通过AnimatableModifier可以监听到值的didSet修改,我们就可以调用回调函数。

代码

// 动画完成监听
struct AnimatableCompletionModifier<Value>: AnimatableModifier where Value: VectorArithmetic {var animatableData: Value {didSet {notifyCompletionIfFinished()}}private var targetValue: Valueprivate var completion: () -> Voidinit(observedValue: Value, completion: @escaping () -> Void) {self.completion = completionanimatableData = observedValuetargetValue = observedValue}private func notifyCompletionIfFinished() {guard animatableData == targetValue else { return }DispatchQueue.main.async {self.completion()}}func body(content: Content) -> some View {return content}
}extension View {func onAnimationCompleted<Value: VectorArithmetic>(for value: Value, completion: @escaping () -> Void) -> ModifiedContent<Self, AnimatableCompletionModifier<Value>> {modifier(AnimatableCompletionModifier(observedValue: value, completion: completion))}
}

使用

Text("回调").opacity(introTextOpacity).onAnimationCompleted(for: introTextOpacity) {print("成功回调了")}
http://www.lryc.cn/news/423814.html

相关文章:

  • 场外期权交易:找到适合你的那一款
  • Elasticsearch-使用java 批量插入文档
  • 【区块链+食品安全】农业产业全过程溯源云平台 | FISCO BCOS应用案例
  • 每日面试题Day2
  • 基于MyBatis-plus的SpringBoot开发
  • 网站数据导出为excel 源码大全java php c# js python 与网络安全兼顾-阿雪技术观
  • Python知识点21---怎么把你的Python项目打包成一个完整的结果物给别人提供
  • 关于#genesiscsheel#的问题,如何解决?
  • 无人机之如何避免飞行错误篇
  • 免费简单的制作3D卡通建模——Fuse软件和Readyplayer的使用介绍
  • 企业大模型业务架构技术选型分析
  • pyqt5 中python如何通过Qtwebchannel主动发消息给web前端
  • Java Web —— 第五天(请求响应2)
  • 数据科学 - 模型检验
  • 【GaussDB(DWS)】数仓部署架构与物理结构分析
  • git做版本管理的时候,中途添加了新的内容在.gitignore中,怎么让git不再跟踪
  • Unity新输入系统 之 PlayerInput(真正的最后封装部分)
  • 跨部门协作:观测云在促进业务与技术团队合作中的作用
  • OceanBase V4.3 列存引擎之场景问题汇总
  • Spring中的Aware接口及应用场景
  • 设计模式 - 建造者模式
  • MySQL数据分析进阶(十二)设计数据库——PART4
  • 在 Spring Boot 中使用桥接模式实现灵活的报表生成服务
  • 算法:外卖调度
  • leetcode50. Pow(x, n),快速幂算法
  • Xinstall神器来袭,轻松搞定CPA推广渠道统计!
  • 011 | efinance分析豆一主连期货
  • 【Python】函数入门(下)
  • git的基本概念和使用原理
  • 手写简化版的vue-router