我正在尝试实现一个按钮,该按钮使用“来自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
结果如下:
我希望绿色 View 能够覆盖整个屏幕,并且还希望模式不能“拖动以关闭”。
是否可以在PresentationButton上添加修饰符以使其全屏显示并且不可拖动?
我也尝试过导航按钮,但是:
-它不是“从底部滑动”
-它在详细信息 View 上创建了“后退按钮”,我不希望这样
谢谢!
最佳答案
不幸的是,从Beta 2 Beta 3开始,这在纯SwiftUI中是不可能的。您可以看到Modal
has no parameters像UIModalPresentationStyle.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)
}
当然,您可以从那里在叠加层中添加所需的任何过渡。