wake-up-neo.net

Dragable UIView Swift 3

Ich möchte die Objekte auf dem Bildschirm ziehen können, aber sie werden nicht verwendet. Ich habe alles versucht, aber immer noch nicht.

Hier ist der Code.

func panGesture(gesture: UIPanGestureRecognizer) {
    switch gesture.state {
    case .began:
        print("Began.")
        for i in 0..<forms.count {
            if forms[i].frame.contains(gesture.location(in: view)) {
                gravity.removeItem(forms[i])
            }
        }
    case .changed:
        let translation = gesture.translation(in: forms[1])

        gesture.view!.center = CGPoint(x: gesture.view!.center.x + translation.x, y: gesture.view!.center.y + translation.y)

        gesture.setTranslation(CGPoint.zero, in: self.view)

        print("\(gesture.view!.center.x)=\(gesture.view!.center.y)")
        print("t;: \(translation)")
    case .ended:
        for i in 0..<forms.count {
            if forms[i].frame.contains(gesture.location(in: view)) {
                gravity.addItem(forms[i])
            }
        }
        print("Ended.")
    case .cancelled:
        print("Cancelled")
    default:
        print("Default")
    }
}

Sie haben auch die Schwerkraft. Die Formen sind Quadrate und Kreise.

Erläuterung: In .began - Ich deaktiviere die Schwerkraft für das ausgewählte Formular . In .changed - Ich versuche, die Koordinaten . In .end zu ändern - Ich aktiviere erneut die Schwerkraft.

Bildschirmfoto.

 enter image description here

 enter image description here

15
Dpetrov

Schritt 1: Nehmen Sie eine Ansicht, die Sie in Storyboard ziehen möchten.

@IBOutlet weak var viewDrag: UIView!

Schritt 2: PanGesture hinzufügen.

var panGesture       = UIPanGestureRecognizer()

Schritt 3: In ViewDidLoad den folgenden Code hinzufügen.

override func viewDidLoad() {
    super.viewDidLoad()

    panGesture = UIPanGestureRecognizer(target: self, action: #selector(ViewController.draggedView(_:)))
    viewDrag.isUserInteractionEnabled = true
    viewDrag.addGestureRecognizer(panGesture)

}

Schritt 4: Code für DragView.

func draggedView(_ sender:UIPanGestureRecognizer){
    self.view.bringSubview(toFront: viewDrag)
    let translation = sender.translation(in: self.view)
    viewDrag.center = CGPoint(x: viewDrag.center.x + translation.x, y: viewDrag.center.y + translation.y)
    sender.setTranslation(CGPoint.zero, in: self.view)
}

Schritt 5: Ausgabe.

 GIF

57
Kirit Modi

Verwenden Sie den folgenden Code für Swift 2.3

@IBOutlet weak var viewDrag: UIView!
var panGesture = UIPanGestureRecognizer()

In ViewDidLoad wird der folgende Code hinzugefügt.

override func viewDidLoad() {
super.viewDidLoad()
 var panGesture = UIPanGestureRecognizer(target: self, action:("draggedView:"))
 viewDrag.userInteractionEnabled = true
 viewDrag.addGestureRecognizer(panGesture)
}

func draggedView(sender:UIPanGestureRecognizer){
    self.view.bringSubviewToFront(viewDrag)
    let translation = sender.translationInView(self.view)
    viewDrag.center = CGPoint(x: viewDrag.center.x + translation.x, y: viewDrag.center.y + translation.y)
    sender.setTranslation(CGPoint.zeroPoint, inView: self.view)
}

Hoffe das hilft jemandem.

0
Dilip Tiwari