【问题标题】:Paste Image in PencilKit Canvas在 PencilKit 画布中粘贴图像
【发布时间】:2021-12-15 13:21:04
【问题描述】:

由于我是 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 }

【问题讨论】:

    标签: swift drawing pencilkit


    【解决方案1】:

    如果您要存档的是,将背景图像粘贴到画布上以便能够在其上绘图:

    您可以通过将UIImageView 作为子视图插入PKCanvasView 来将图像放在背景中并进行绘制:

    let canvasView = PKCanvasView()
    let imageView = UIImageView(image: UIImage(systemName: "pencil"))
    canvasView.insertSubview(imageView, at: 1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多