【发布时间】: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