【发布时间】:2021-11-26 10:38:39
【问题描述】:
This amazing question 因“缺乏技术细节”而被关闭,所以我肯定会在这里放很多。
设置:
- 创建 iOS SwiftUI 应用
- 添加文件如下
- 观察问题
AppleApp.swift
import SwiftUI
@main
struct AppleApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
ContentView.swift
import SwiftUI
struct ContentView: View {
@State var isLocked = true
var body: some View {
VStack {
Text("Unlocked view")
.padding()
}.fullScreenCover(isPresented: $isLocked) {
} content: {
LockScreen($isLocked)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
LockScreen.swift
import SwiftUI
struct LockScreen: View {
@Binding var isLocked: Bool
init(_ isLocked: Binding<Bool>) {
self._isLocked = isLocked
}
var body: some View {
ZStack {
Color.gray
VStack {
Text("Locked")
Button("Unlock") {
print("unlock button pressed")
isLocked = false
}
}
}
}
}
struct LockScreen_Previews: PreviewProvider {
@State static var isLocked: Bool = true
static var previews: some View {
LockScreen($isLocked)
}
}
问题:
观看视频:应用启动后,“解锁视图”可见,并且在动画短暂延迟后出现“LockScreen”。
期望的结果:
应用程序在启动后会显示“LockScreen”,但可以通过按“解锁”按钮将其关闭。
【问题讨论】:
-
完全没有,因为它只是延迟了过渡开始的时间。
-
刚刚用我的方式尝试了你的代码工作正常。
.onAppear() { withoutAnimation { isLocked = true } }刚刚添加了这个并最初为 isLocked 设置了 false -
你需要它来做全屏封面吗?我有一个不同的方法,也许你会更喜欢。在您向项目添加 Splash 之前,它始终会首先显示白屏。
-
这是否回答了您的问题stackoverflow.com/a/69717515/12299030?
标签: ios swift animation swiftui