快速按下潜在的SwiftUI ZStack过渡错误

时间:2020-05-10 20:49:23

标签: swift xcode swiftui

我想制作一个可以在iOS和Mac上跨平台使用的模式。

问题是,如果我快速切换模式,这是一个奇怪的行为。附有以下奇怪行为的GIF。这是SwiftUI错误吗?

如果没有,我做错了什么?

编辑:更多信息。 没有动画和过渡,交互将按预期进行。

GIF

这是Playground上的代码

import SwiftUI
import PlaygroundSupport


struct CView: View {
    @State var isShown = false
    var body: some View {
        ZStack {
            Color.white
            ZStack {
                Color.green
                VStack {
                    HStack {
                        Spacer()
                        Text("Open").onTapGesture {
                            self.isShown = true
                        }
                    }
                    Spacer()
                }
            }
                .edgesIgnoringSafeArea(.all)
                .zIndex(0)
            if self.isShown {
                ZStack {
                    Color.red
                    VStack {
                        HStack {
                            Spacer()
                            Text("Close").onTapGesture {
                                self.isShown = false
                            }
                        }
                        Spacer()
                    }
                }
                .transition(AnyTransition.move(edge: .bottom))
                .animation(.easeInOut)
                .edgesIgnoringSafeArea(.all)
                .zIndex(1)

            }
        }
    }
}
// Present the view controller in the Live View window
PlaygroundPage.current.setLiveView(CView())
``


  [1]: https://i.stack.imgur.com/21z7z.gif

1 个答案:

答案 0 :(得分:0)

这是一个解决方案。经过Xcode 11.5b测试

demo

chatbot