как я могу быстро переместить изображение в canvasView (сделанном с помощью PencilKit) - PullRequest
0 голосов
/ 14 июля 2020

Я делаю приложения для рисования, которые позволяют рисовать мультфильмы. Итак, я реализовал 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)
        }
    }
}
...