【问题标题】:Sheet Modal does not present whole View in SwiftUI表单模态不会在 SwiftUI 中显示整个视图
【发布时间】:2021-11-24 13:14:36
【问题描述】:

我对 SwiftUI 编程非常陌生,遇到了以下我无法找到答案的问题。

我想从我的主视图中打开一个工作表模式,并想呈现一个带有 Rect 的简单视图(用于测试目的)。

 .sheet(isPresented: $api.showDrawing) {
      
      DrawingViewView()
 }

我的 DrawingViewView 看起来像:

    struct DrawingViewView: View {
      var body: some View {
        Rectangle()
          .fill(Color.red)
          .frame(width: 1500, height: 1000)
       }
     }

无论我将 Rect 做得多大,它都不会显示大于:

有没有办法让纸张的宽度变大?

编辑: 我也想过使用 fullScreenCover,但如果我在 fullScreenCover 中打开 PKCanvasView,pencilKit 会表现得很奇怪。我画的线与pencilInput不对应

编辑:显然问题是水平方向。如果我把我的 iPad 竖起来,我完全没有问题!

非常感谢!

雅各布

【问题讨论】:

  • 可能没有sheet,您将不得不使用 UIKit 中的presentationController。 Here 是一个起点。这不是您要寻找的东西,而是一个开始。

标签: swift swiftui modal-sheet


【解决方案1】:

我认为这是最简单的方法。

import SwiftUI

struct FullScreenModalView: View {
    @Environment(\.presentationMode) var presentationMode

    var body: some View {
        ZStack {
            Color.red.edgesIgnoringSafeArea(.all)
            Button("Dismiss Modal") {
                presentationMode.wrappedValue.dismiss()
            }
        }
    }
}

struct ContentView: View {
    @State private var isPresented = false

    var body: some View {
        Button("Present!") {
            isPresented.toggle()
        }
        .fullScreenCover(isPresented: $isPresented, content: FullScreenModalView.init)
    }
}

struct ex_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

希望如你所愿!

【讨论】:

  • 感谢您的快速回复!我已经考虑过使用 fullScreenCover,但pencilKit 在它上面的表现真的很奇怪。如果我在 fullScreenCover 中打开我的 PKCanvasView,我的铅笔输入与我绘制的线条不对应。我不知道为什么会发生这种行为......
  • 编辑:显然问题是水平方向。如果我把我的 iPad 竖起来,我一点问题都没有!
  • 如果你需要用铅笔画画,也许你尽可能使用 UIKit 会更好,因为 SwiftUI 仍然需要改进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 2020-07-14
相关资源
最近更新 更多