Я делаю приложения для рисования, которые позволяют рисовать мультфильмы. Итак, я реализовал PencilKit и создал canvasView. но я также хочу добавить изображение и переместить его в CanvasView. Поэтому я переопределяю функцию touchesMoved (_ touches: Set, с событием: UIEvent?), Но это не работает ... когда я касаюсь рисования изображения canvasView .. Могу ли я решить эту проблему?
Я добавляю мой код и изображение, которое я создаю .. Спасибо !!
введите описание изображения здесь ] (об изображении)
/
/
// ViewController.swift
// webtoon
//
// Created by 신효근 on 2020/07/13.
// Copyright © 2020 신효근. All rights reserved.
//
import UIKit
import PencilKit
class ViewController: UIViewController, PKCanvasViewDelegate, PKToolPickerObserver {
@IBOutlet weak var backgroundImage: UIImageView!
@IBOutlet weak var canvasView: PKCanvasView!
@IBOutlet weak var addedImage: UIImageView!
let canvasWidth : CGFloat = 768
let canvasOverscrollHight : CGFloat = 500
var imageView = UIImageView()
var drawing = PKDrawing()
let picker = UIImagePickerController()
var location = CGPoint(x: 0, y: 0)
override func viewDidLoad() {
super.viewDidLoad()
addedImage.backgroundColor = .red
canvasView.delegate = self
canvasView.drawing = drawing
canvasView.allowsFingerDrawing = true
canvasView.didAddSubview(addedImage)
canvasView.backgroundColor = .clear
canvasView.isOpaque = false
picker.delegate = self
if let window = parent?.view.window,
let toolPicker = PKToolPicker.shared(for: window){
toolPicker.setVisible(true, forFirstResponder:canvasView)
toolPicker.addObserver(canvasView)
canvasView.becomeFirstResponder()
}
// var location = CGPoint(x: 0, y: 0)
// @IBOutlet weak var Person: UIImageView!
//
// override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
// let touch : UITouch = touches.first as UITouch!
// location = touch.locationInView(self.view)
// Person.center = location
// }
//
// override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
// let touch : UITouch = touches.first as UITouch!
// location = touch.locationInView(self.view)
//
// Person.center = location
// }
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("터치시작")
let touch : UITouch = touches.first! as UITouch
location = touch.location(in: self.view)
addedImage.center = location
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
print("터치중")
let touch : UITouch = (touches.first!) as UITouch
location = touch.location(in: self.view)
addedImage.center = location
}
override var prefersHomeIndicatorAutoHidden: Bool {
return true
}
@IBAction func saveDrawingToCameraRoll(_ sender: Any) {
}
// func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
// updateContentSizeForDrawing()
// }
// func updateContentSizeForDrawing(){
// let drawing = canvasView.drawing
// let contentHeight : CGFloat
//
// if !drawing.bounds.isNull{
// contentHeight = max(canvasView.bounds.height, (drawing.bounds.maxY+self.canvasOverscrollHight) * canvasView.zoomScale)
// } else{
// contentHeight = canvasView.bounds.height
// }
//
// canvasView.contentSize = CGSize(width: canvasWidth * canvasView.zoomScale, height: contentHeight)
// }
@IBAction func addButtonPressed(_ sender: Any) {
picker.sourceType = .photoLibrary
picker.allowsEditing = true
self.present(self.picker, animated: true, completion: nil)
}
}
extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage{
backgroundImage.image = image
picker.dismiss(animated: true)
}
}
}