由于我对SwiftUI编程非常陌生,所以我想问一下,最好的方法是将图像粘贴到PKCanvasView中。
我不期望得到任何代码,但可能有一些方向,什么是可能的方式,以实现我的目标。不幸的是,我发现的唯一的教程是将图像设置为一个背景图像来绘制它。然而,我不希望有一个全屏图像,而是一个图像,可以放置和调整大小取决于用户的需要。
我在Swift UI中使用PencilKit和一个DrawingWrapper:
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 }发布于 2022-03-23 14:06:13
如果要存档的是,请将背景图像粘贴到画布上,以便能够在其上进行绘图:
您可以将图像放在背景中,并通过将UIImageView作为PKCanvasView的子视图进行绘图。
let canvasView = PKCanvasView()
canvasView.isOpaque = true
let imageView = UIImageView(image: UIImage(systemName: "pencil"))
canvasView.insertSubview(imageView, at: 1)https://stackoverflow.com/questions/70364438
复制相似问题