0

由于我对 SwiftUI 编程很陌生,所以我想问一下将图像粘贴到 PKCanvasView 中的最佳方法是什么。

我不希望获得任何代码,但可能会获得一些指导,以实现我的目标。不幸的是,我发现的唯一教程是将图像设置为背景图像以在其上绘制。但是,我不想拥有全屏图像,而是可以根据用户需要放置和调整大小的图像。

我在带有 DrawingWrapper 的 Swift UI 中使用 PencilKit:

    struct DrawingWrapper: UIViewControllerRepresentable {
  typealias UIViewControllerType = DrawingViewController
  
  var manager: API
  
  func makeUIViewController(context: Context) -> DrawingViewController {
    let viewController = DrawingViewController()
    viewController.drawingData = manager.getData()
    
    
    viewController.drawingChanged = { data in
      manager.updateDrawingData(data: data)
      let canvas = viewController.canvas
      manager.updateImage(image: canvas.drawing.image(from: canvas.bounds, scale: 1.0))
    }
    
    
    return viewController
  }
  
  func updateUIViewController(_ uiViewController: DrawingViewController, context: Context) {
    uiViewController.drawingData = manager.getData()
  }
  
}

我的 DrawingViewController 看起来像这样:

class DrawingViewController: UIViewController {

  
  lazy var canvas: PKCanvasView = {
    let v = PKCanvasView()
    v.drawingPolicy = .pencilOnly
    v.minimumZoomScale = 1
    v.maximumZoomScale = 2
    v.translatesAutoresizingMaskIntoConstraints = false
    return v
  }()
  
  lazy var toolPicker: PKToolPicker = {
    let toolPicker = PKToolPicker()
    toolPicker.addObserver(self)
    return toolPicker
  }()
  
  var drawingData = Data()
  
  var drawingChanged: (Data) -> Void = { _ in }
4

0 回答 0