Перетаскивание и привязка UIViews к droparea в Swift / iOS - PullRequest
0 голосов
/ 10 июля 2019

Я хочу запрограммировать приложение для управления контейнером. который вы можете использовать для размещения нового или существующего контейнера в обозначенных областях в 2D-пространстве. Новые контейнеры втягиваются снизу. Существующие контейнеры должны перемещаться только после длительного нажатия на них. Мне удалось заставить контейнер двигаться и распознать длинное нажатие, но я понятия не имею, как сделать так, чтобы он переместился в droparea и при необходимости повернул контейнер в том же направлении, если это необходимо.

Я уже пробовал: UIDrop / DragInteractions, которые работают, но ограничивают меня в случае анимации и дальнейших жестов. Hit-Detection через прикосновения начал и тому подобное. PanGestureRecognizer для перемещения и обнаружения.

import UIKit
class ViewController: UIViewController {
    @IBOutlet weak var exContainer: UIView!
    @IBOutlet var spots: [UIView]!

    var panGesture = UIPanGestureRecognizer()
    var longpressGesture = UILongPressGestureRecognizer()

    override func viewDidLoad() {
        super.viewDidLoad()

        panGesture = UIPanGestureRecognizer.init(target: self, action: #selector(conMoved))
        longpressGesture = UILongPressGestureRecognizer.init(target: self, action: #selector(conSelected))

        exContainer.addGestureRecognizer(panGesture)
        exContainer.addGestureRecognizer(longpressGesture)
    }

    @objc func conMoved() {
        exContainer.center = panGesture.location(in: self.view)
    }

    @objc func conSelected() {
        print("long")
    }
}

https://www.youtube.com/watch?v=ulB49kAIK1o Это видео показывает мое ожидаемое поведение. И наконец, мой вопрос: Какой самый эффективный способ реализовать этот проект.

...