gpt4 book ai didi

SwiftUI:无法在 MainView 中将 DetailView 转换为 ZStack 以正常工作

转载 作者:行者123 更新时间:2023-12-04 15:29:51 25 4
gpt4 key购买 nike

我在任何地方都找不到这个问题的答案,希望你们中的一个能帮助我。

我有一个包含一些内容的 MainView。按下一个按钮,我想打开一个 DetailView。我正在使用 ZStack 在顶部分层 DetailView,填满屏幕。

但是使用下面的代码我无法让它工作。 DetailView 在插入时没有过渡,在移除时停止。我尝试过手动设置 zIndex 和不设置自定义 assymetricalTransition。无法让它工作。任何解决方案?

//MainView
@State var showDetail: Bool = false

var body: some View {
ZStack {
VStack {
Text("Hello MainWorld")
Button(action: {
withAnimation(.spring()) {
self.showDetail.toggle()
}
}) {
Text("Show detail")
}
}


if showDetail {
ContentDetail(showDetail: $showDetail)
.transition(.move(edge: .bottom))
}
}
.edgesIgnoringSafeArea(.all)
}

这里是 DetailView:

//DetailView

@Binding var showDetail: Bool

var body: some View {
VStack (spacing: 25) {
Text("Hello, DetailWorld!")

Button(action: { withAnimation(.spring()) {
self.showDetail.toggle()
}

}) {
Text("Close")
}
.padding(.bottom, 50)


}
.frame(width: UIScreen.main.bounds.width,
height: UIScreen.main.bounds.height)
.background(Color.yellow)
.edgesIgnoringSafeArea(.all)

}

这段代码的结果是这样的: enter image description here

我正在运行 Xcode 11.4.1,因此隐式动画似乎也不起作用。真的卡在这里,希望你们中的一个能帮助我!谢谢 :)

最佳答案

这是一个解决方案。使用 Xcode 11.4/iOS 13.4 测试。

demo

struct MainView: View {
@State var showDetail: Bool = false

var body: some View {
ZStack {
Color.clear // extend ZStack to all area
VStack {
Text("Hello MainWorld")
Button(action: {
self.showDetail.toggle()
}) {
Text("Show detail")
}
}

if showDetail {
DetailView(showDetail: $showDetail)
.transition(AnyTransition.move(edge: .bottom))
}
}
.animation(Animation.spring()) // one animation to transitions
.edgesIgnoringSafeArea(.all)
}
}

struct DetailView: View {
@Binding var showDetail: Bool

var body: some View {
VStack (spacing: 25) {
Text("Hello, DetailWorld!")

Button(action: {
self.showDetail.toggle()
}) {
Text("Close")
}
.padding(.bottom, 50)


}
.frame(maxWidth: .infinity, maxHeight: .infinity) // fill in container
.background(Color.yellow)
}
}

关于SwiftUI:无法在 MainView 中将 DetailView 转换为 ZStack 以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61445745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com