我有一个相当基本的设置,但过渡似乎不工作。理想的结果是淡出加载和淡入内容。一旦2秒结束,isLoading设置为false,它立即加载ContentView,没有动画过渡。
结构MyApp:App { @State private var isLoading = true
var body: some Scene {
WindowGroup {
ZStack {
if isLoading {
LoadingView()
.transition(.opacity)
.animation(.easeOut(duration: 2.0), value: isLoading)
} else {
ContentView()
.transition(.opacity)
.animation(.easeIn(duration: 2.5), value: isLoading)
}
}
.onAppear {
startApp()
}
}
}
private func startApp() {
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
isLoading = false
}
}
}
我尝试了几种不同的方法,尽管这段代码似乎是最可行的解决方案。
2条答案
按热度按时间lkaoscv71#
你应该考虑更换
通过
ffscu2ro2#
animation
是视图animate
的方式,而不是transit
的方式,这就是为什么它一开始就不起作用。1.要求父视图设置动画
1.停止转换视图