Have tried many methods to try and be able to draw and see the toolkit at the same time, I am trying to set it up to draw on top of an img and save those changes. below is one of my attempts where I can draw but not see toolkit.
import UIKit
import PencilKit
class ImageEditViewController: UIViewController, PKCanvasViewDelegate, PKToolPickerObserver {
var originalImage: UIImage!
var canvasView: PKCanvasView!
var toolPicker: PKToolPicker?
init(image: UIImage) {
super.init(nibName: nil, bundle: nil)
self.originalImage = image
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override func viewDidLoad() {
super.viewDidLoad()
setUpPencilKit()
}
deinit {
toolPicker?.removeObserver(self)
}
func setUpPencilKit() {
self.canvasView = PKCanvasView(frame: self.view.bounds)
self.canvasView.delegate = self
self.canvasView.backgroundColor = .clear
self.canvasView.drawingPolicy = .anyInput
if let image = self.originalImage {
let imageView = UIImageView(image: image)
imageView.contentMode = .scaleAspectFit
view.addSubview(imageView)
view.addSubview(self.canvasView)
view.sendSubviewToBack(imageView)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
if let window = self.view.window, self.toolPicker == nil {
self.toolPicker = PKToolPicker.shared(for: window)
self.toolPicker?.addObserver(self)
self.toolPicker?.setVisible(true, forFirstResponder: self.view)
}
}
}
func toolPickerVisibilityDidChange(_ toolPicker: PKToolPicker) {
// Handle visibility change if needed
}
// Additional PKCanvasViewDelegate methods can be implemented here
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
setUpPencilKit()
}
// MARK: - PKCanvasViewDelegate
func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
// Handle drawing changes if needed
}
}
fetch image and produce a canvas view with said image to draw on using pencil kit and also have the toolkit display.