#swift #copy #clone #func #touchesbegan
#swift #Копировать #клонировать #функция #touchesbegan
Вопрос:
Мой приведенный ниже swift-код при сборке кода помещает коричневый uiview в контроллер представления. Что я хотел бы, чтобы это делалось, так это когда пользователь нажимает на кнопку копирования, а затем коричневое поле повторно касается контроллера представления, объект вставляется туда. Весь мой код приведен ниже, и раскадровки нет. Ниже также есть gif-файл с функцией копирования.
import UIKit
class ViewController: UIViewController {
var addBoxes = [UIImageView]()
let subview = UIImageView()
var currentView: UIView?
var copyButton = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
copyButton.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(copyButton)
copyButton.setTitle("Copy", for: .normal)
NSLayoutConstraint.activate([
copyButton.leadingAnchor.constraint(equalTo: view.leadingAnchor),
copyButton.bottomAnchor.constraint(equalTo: view.bottomAnchor),
copyButton.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.04),
copyButton.widthAnchor.constraint(equalTo:view.widthAnchor ,multiplier: 1),
])
let subview = UIImageView()
subview.isUserInteractionEnabled = true
addBoxes.append(subview)
view.addSubview(subview)
let pan = UIPanGestureRecognizer(target: self, action: #selector(handlePanGestured(_:)))
subview.addGestureRecognizer(pan)
subview.frame = CGRect(x: view.bounds.midX , y: view.bounds.midY CGFloat(100), width: CGFloat(100), height: 100)
subview.backgroundColor = .brown
addBoxes.append(subview)
copyButton.backgroundColor = .blue
copyButton.addTarget(self, action: #selector(copyObject), for: .touchDown)
}
@objc func handlePanGestured(_ gesture: UIPanGestureRecognizer) {
currentView = gesture.view
let draggedView = gesture.view!
view.bringSubviewToFront(draggedView)
let translation = gesture.translation(in: view)
draggedView.center = CGPoint(x: draggedView.center.x translation.x, y: draggedView.center.y translation.y)
gesture.setTranslation(.zero, in: view)
}
@objc func copyObject(){
}
}