所有开源包
界面Swift

SwiftUI-Animation-Masterclass

面向 iOS 和 macOS 的 SwiftUI 物理驱动动效、粒子、变化效果和过渡。

7星标数最新版本: v2.0.0更新时间: 2026年10月15日
支持平台:iOS 17macOS 14

许可证: MIT

一个面向 iOS 17+ 和 macOS 14+ 的 SwiftUI 动效 Swift package:基于物理的 spring、decay 和弹跳效果,保留手指速度的拖动手势,粒子效果,变化效果和过渡效果。所有内容都是一个 view modifier、一个 Animation、一个 Transition 或一个纯值类型,该 package 没有依赖。

功能特性

  • 以封闭形式求解的 DampedSpring,带有 gentle、snappy、bouncy 和 smooth 预设、稳定时间以及转换为 SwiftUI 动画的能力
  • Decay 预测一次快速滑动的结束位置;GravityBounce 和 .gravityBounce() 让一个值下落并弹跳
  • .elasticDrag() 和 .snapDrag() 把释放速度传递给 spring,并在边界之外用 rubber-band 阻力产生拉伸
  • 单个 Canvas 中的粒子:8 种预设、5 种力和 7 种形状,基于 seed 的模拟,最多 10,000 个粒子
  • 变化效果(shake、jump、spin、pulse、ping、shine)以及 iris、wipe、flip 和 pop 过渡
  • 每种效果都会自行遵循 Reduce Motion 设置
  • 以 Swift 6 语言模式构建;包含四篇文章的 DocC 文档目录,以及面向 iOS 和 macOS 的 MotionGallery 示例应用

快速开始

swift
1import SwiftUI
2import SwiftUIAnimationMasterclass
3 
4struct LikeButton: View {
5 @State private var likes = 0
6 
7 var body: some View {
8 Button("Like", systemImage: "heart.fill") { likes += 1 }
9 .buttonStyle(.borderedProminent)
10 .changeEffect(.jump(), value: likes)
11 .particleBurst(.hearts, trigger: likes)
12 }
13}

安装

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/SwiftUI-Animation-Masterclass.git", from: "2.0.0")
3],
4targets: [
5 .target(name: "YourApp", dependencies: [
6 .product(name: "SwiftUIAnimationMasterclass", package: "SwiftUI-Animation-Masterclass")
7 ])
8]

截图

ParticleSystem 绘制的 confetti 和烟花爆发效果、雪和余烬
ParticleSystem 绘制的 confetti 和烟花爆发效果、雪和余烬,深色主题
shake、jump、spin、pulse、ping 和 shine 变化效果
shake、jump、spin、pulse、ping 和 shine 变化效果,深色主题
用 gravityBounce 下落的一个球、一个 bouncy 的 DampedSpring 和一次 Decay 快速滑动
用 gravityBounce 下落的一个球、一个 bouncy 的 DampedSpring 和一次 Decay 快速滑动,深色主题
MotionGallery 示例应用在 iPhone 模拟器上的物理实验室界面,浅色
MotionGallery 示例应用在 iPhone 模拟器上的物理实验室界面,深色
MotionGallery 示例应用的变化效果界面,浅色
MotionGallery 示例应用的变化效果界面,深色
MotionGallery 示例应用的过渡效果界面,浅色
MotionGallery 示例应用的过渡效果界面,深色

时间线

  1. 仓库开放

  2. 标记 1.0.0;其 manifest 指向了仓库中不存在的源码文件夹,因此无法构建

  3. 精简:移除了旧的动画模块,只留下一个 demo view 和一个 scroll modifier

  4. 重建为 2.0.0:加入物理、手势、粒子、变化效果和过渡;MobileMotion 和 SwiftParticles 合并进来并归档

相关链接

已合并的仓库

相关文章

阅读文章