animation - 如何像在 SwiftUI 中打开 App 一样转换到新视图?
问题描述
因此,当您在 iPhone 上打开一个应用程序时,它会从您的 AppIcon 转换为一个看起来完全不同的视图,并且感觉很自然。我尝试在下面的 GIF 图像中模拟动画。你将如何在 SwiftUI 中实现这种效果?
您可能需要刷新才能看到动画。
我将通过一些示例代码来增强这个问题,说明我今晚已经走了多远,但也许其他人会更早地进行演示。那将是真棒。
解决方案
为了让您了解动画在 SwiftUI 中的工作原理以及如何组合它们,我为您制作了这个小动画,它由两部分组成:
struct SplashScreen: View {
@State private var circleAlpha = 1.0
@State private var sizeCircle: CGFloat = 0
@State private var textAlpha = 1.0
func handleAnimations() {
runAnimationPart1()
let deadline: DispatchTime = .now() + 1
DispatchQueue.main.asyncAfter(deadline: deadline) {
self.runAnimationPart2()
}
}
func runAnimationPart1() {
withAnimation(.easeIn(duration: 1)) {
textAlpha = 0
}
}
func runAnimationPart2() {
withAnimation(.easeIn(duration: 1)) {
sizeCircle = 1400
}
}
var body: some View {
ZStack {
Text("Your App Icon")
.font(.largeTitle)
.foregroundColor(Color.green)
.opacity(textAlpha)
Circle()
.fill(Color.blue)
.frame(width: sizeCircle, height: sizeCircle,
alignment: .leading)
.opacity(circleAlpha)
}
.onAppear() {
self.handleAnimations()
}
} }
推荐阅读
- java - 创建泛型类以传递泛型类型(对象或列表)
- amazon-web-services - 按 AWS 区域限制对 S3 存储桶的访问?
- mongodb - 如何使用 Elasticsearch 或其他搜索引擎?
- javascript - 创建一个返回 Promise 并处理回调的函数
- apache-spark - 在没有重复列的情况下加入 pyspark
- javascript - 如何使用 ondrop 事件访问类元素内的段落元素并将其删除?
- vb.net - 声明查询时出现 OleDBDataAdapter 错误
- c# - UWP 多文件选择器列表
- javascript - Java 脚本执行启动 chrome 而不是 web 视图
- javascript - 如何知道哪些事件减慢了 setTimeout?