复活节彩蛋动画
描述
复活节彩蛋动画是一种通过添加美丽的无限动画来装饰您应用程序整个屏幕或独立视图的便捷方法。此库允许您添加自己的图片,启用它们的动画,指定动画速度,并方便地设置特定日期以在您的应用程序中显示这种装饰性添加。该库可以方便地将其集成到用UIKit和SwiftUI编写的项目中。
Simulator.Screen.Recording.-.iPhone.13.mini.-.2024-02-13.at.18.17.55.mp4
UIKit中的使用示例
以下是AnimatedView最基本用法的一个例子,其中仅将一个图像作为参数传递给初始化器
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let animatedView = AnimatedView(patternImage: UIImage(named: "pattern"))
animatedView.frame = self.view.bounds
self.view.addSubview(animatedView)
animatedView.animate()
}
}
如有必要,您可以指定以下附加参数之一 - 动画速度或动画应该播放的日期
let animatedView = AnimatedView(patternImage: UIImage(named: "pattern"), divider: 1500)
patternImage
- UIImage 类型的图像
重要:为了创建“无限循环”图像的效果,建议选择所谓的“图案”作为图像 - 一种可以平铺的图像,它将与自身对接
divider
- 一个表示图像在父视图的哪个部分(高度或宽度)上应该偏移到下一次帧更新的数字。因此,指定的数字越 大,图像在下一个帧上偏移的距离就越 小,相应地,动画周期就会 更长,也就是说,动画本身会 更慢。默认数字为 1000
let animatedView = AnimatedView(patternImage: UIImage(named: "pattern"), dates: ["2024/12/25"])
dates
- 日期数组,以 YYYY/MM/dd
格式表示为字符串。指定此参数时,AnimatedView 内容仅在指定的日期上显示。默认情况下,此数组为空,内容在任何天都可以显示
重要:要开始动画,必须按照示例中的指示调用 animemate() 方法
animatedView.animate()
否则,您的图像将看起来是静态的
SwiftUI 中的使用示例
以下是 RepresentedAnimatedView 最基本使用的示例,其中只将一个图像作为参数传递给初始化器
import SwiftUI
struct ContentView: View {
@State private var currentOfset = CGPoint(x: 0.0, y: 0.0)
var body: some View {
let animatedView = RepresentedAnimatedView(
patternImage: UIImage(named: "pattern"),
divider: 1500,
dates: ["2024/02/13"],
offset: self.$currentOfset
)
animatedView.animate()
return ZStack {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
animatedView
.ignoresSafeArea()
.disabled(true)
}
}
}
#Preview {
ContentView()
}
RepresentedAnimatedView
有一个具有四个参数的初始化器,其中两个是 divider 和 dates,它们是可选的。
let animatedView = RepresentedAnimatedView(patternImage: UIImage(named: "pattern"), divider: 1500, dates: ["2024/12/25", "2025/01/01"], offset: self.$currentOfset)
前三个参数的目的是在上文关于在 UIKit 中使用库的章节中描述。
offset
是一个类型为 SGPoint 的状态变量,表示图相对于其自身框架的初始位置(在大多数情况下这是 CGPoint(x: 0.0, y: 0.0)
)
@State private var currentOfset = CGPoint(x: 0.0, y: 0.0)
重要:为了在 RepresentedAnimatedView
的创建实例上开始动画,调用上面示例中的 animate() 方法
animatedView.animate()
重要:为了保持与位于 RepresentedAnimatedView
下的控制项交互的能力,添加上面示例中指出的 .disabled
修饰符
animatedView
.ignoresSafeArea()
.disabled(true)
需求
iOS 15+,Swift 5.5
安装
复活节彩蛋动画 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行
pod "EasterEggsAnimation"
许可
复活节彩蛋动画 在 MIT 许可下可用。更多信息请参阅 LICENSE 文件。