【问题标题】:How to implement PencilKit in SwiftUI with background and zoom?如何在带有背景和缩放的 SwiftUI 中实现 PencilKit?
【发布时间】:2022-11-02 04:35:34
【问题描述】:

我正在尝试在 SwiftUI 中构建一个视图,该视图允许我使用 PencilKit 在另一个视图(例如表格)上进行绘制。一切都必须是可缩放的,并且背景视图的元素必须是可点击的。

我考虑过使用 ZStack:

ZStack {
  CanvasView(canvasView: $canvasView)
  BackgroundView()
}

通过这种方式,我可以在 BackgroundView 上进行绘制并与其元素交互,但是如何管理缩放?当我缩放时,只有画布会自行缩放。

我考虑过使用scrollViewDidZoom:

extension Coordinator: PKCanvasViewDelegate {
    func scrollViewDidZoom(_ scrollView: UIScrollView) {
        onZoom()
    }
}

要知道 Canvas 何时缩放。然后 SwiftUI 视图更改如下:

ZStack {
    CanvasView(canvasView: $canvasView, onZoom: onZoom)
    BackgroundView()
        .scaleEffect(scale)
}

func onZoom() {
    scale = canvasView.zoomScale
}

这样,BackgroundView 会自行缩放,但只关注中心。 有没有办法不仅遵循画布缩放比例,还遵循缩放的锚点?

或者更一般地说,有没有办法得到我想要的? 我看到许多应用程序允许在某些视图上绘制并与该视图内的按钮进行交互,但我找不到任何有用的文档。

谢谢

【问题讨论】:

    标签: swift swiftui uikit pencilkit apple-pencil


    【解决方案1】:

    我知道这是答案部分,而不是寻求帮助、澄清或问题的地方,但我没有足够的声誉来添加评论。 但是,您是否找到了解决方案,如果有,您可以分享吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多