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

Я делаю приложения для рисования книг. И я сделал pencilKit быстро. Так что в качестве изображения, которое я добавляю в этот вопрос.

Итак, я могу нарисовать несколько вещей на canvasView. Но!!! Я действительно хочу делать снимки в фотопленке, поэтому я хочу использовать это в качестве фона моего canvasView.

Но если canvasView.addSubview(ImageView) находится в коде, то мой серый ImageView находится в верхней части моего canvasView поэтому, если я рисую что-то, то эти предметы рисуются под canvasView.

Если я использую imageView.sendSubviewToBack(canvasView), то ничего не происходит. Я действительно знал, как вставить фоновое изображение между RootView и 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 canvasView: PKCanvasView!
    
    let canvasWidth : CGFloat = 768
    let canvasOverscrollHight : CGFloat = 500
    var imageView = UIImageView()
    var drawing = PKDrawing()
    let picker = UIImagePickerController()
    
    override func viewDidLoad() {
        
        super.viewDidLoad()
        canvasView.delegate = self
        canvasView.drawing = drawing
        canvasView.alwaysBounceVertical = true
        canvasView.allowsFingerDrawing = true
        
        
        if let window = parent?.view.window,
            let toolPicker = PKToolPicker.shared(for: window){
            toolPicker.setVisible(true, forFirstResponder:canvasView)
            toolPicker.addObserver(canvasView)
            canvasView.becomeFirstResponder()
        }
        
        self.imageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 500)
        self.imageView.backgroundColor = .gray
        imageView.sendSubviewToBack(canvasView)
    }
    
//    override func viewDidLayoutSubviews() {
//        let canvasScale = canvasView.bounds.width/canvasWidth
//        canvasView.minimumZoomScale = canvasScale
//        canvasView.maximumZoomScale = canvasScale
//        canvasView.zoomScale = canvasScale
//    }
    
    override var prefersHomeIndicatorAutoHidden: Bool {
        return true
    }


    @IBAction func saveDrawingToCameraRoll(_ sender: Any) {
        
    }
    
    
    @IBAction func addButtonPressed(_ sender: Any) {
          self.present(self.picker, animated: true)
    }
    
}

extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    
    private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        var newImage: UIImage? = nil
        print("Start")
        print(info)
        print("end")
        if let possibleImage = info["UIImagePickerControllerEditedImage"] as? UIImage { // 수정된 이미지가 있을 경우
            newImage = possibleImage
        } else if let possibleImage = info["UIImagePickerControllerOriginalImage"] as? UIImage { // 오리지널 이미지가 있을 경우
            newImage = possibleImage
        }
        
        imageView.image = newImage // 받아온 이미지를 이미지 뷰에 넣어준다.
        
        picker.dismiss(animated: true) // 그리고 picker를 닫아준다.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...