我正在尝试实现一个按钮,该按钮使用“来自Botton的幻灯片”动画呈现另一个场景。

PresentationButton看起来不错,因此我尝试了一下:

import SwiftUI

struct ContentView : View {
    var body: some View {
        NavigationView {
            PresentationButton(destination: Green().frame(width: 1000.0)) {
                Text("Click")

                }.navigationBarTitle(Text("Navigation"))
        }
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        Group {
            ContentView()
                .previewDevice("iPhone X")
                .colorScheme(.dark)

            ContentView()
                .colorScheme(.dark)
                .previewDevice("iPad Pro (12.9-inch) (3rd generation)"

            )

        }

    }
}
#endif

结果如下:
swiftui - SwiftUI-具有全屏模式的PresentationButton-LMLPHP

我希望绿色 View 能够覆盖整个屏幕,并且还希望模式不能“拖动以关闭”。

是否可以在PresentationButton上添加修饰符以使其全屏显示并且不可拖动?

我也尝试过导航按钮,但是:
-它不是“从底部滑动”
-它在详细信息 View 上创建了“后退按钮”,我不希望这样

谢谢!

最佳答案

不幸的是,从Beta 2 Beta 3开始,这在纯SwiftUI中是不可能的。您可以看到Modal has no parametersUIModalPresentationStyle.fullScreen这样的东西。对于PresentationButton也是如此。

我建议提起雷达。

您当前可以执行的最接近的操作是:

    @State var showModal: Bool = false
    var body: some View {
        NavigationView {
            Button(action: {
                self.showModal = true
            }) {
                Text("Tap me!")
            }
        }
        .navigationBarTitle(Text("Navigation!"))
        .overlay(self.showModal ? Color.green : nil)
    }

当然,您可以从那里在叠加层中添加所需的任何过渡。

08-07 23:49