UIPanGestureRecognizer

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UIPanGestureRecognizer

    Hallo zusammen , bin neu hier und hab gleich mal eine Frage.

    Hab in meinem Viewcontroller oberhalb eine TableView und unten eine CollectionView. zwischen diesen beiden views ein UiLabel.

    Mit Einem UIPanGestureRecognizer kann ich deren Größe verschieben. Funktioniert alles Fein.
    Allerdings wenn ich jetzt die tableview scrolle oder einen Button drücke gehen die Beiden Views wieder zur ursprünglichen Position zurück.
    Hatte von euch schon mal das gleiche Problem bzw. weis woran das liegen kann ?
    Danke im Voraus
  • @objc func sizing(_ gesture: UIPanGestureRecognizer) {
    let translation = gesture.translation(in: self.view)
    let tableView = tableView1!
    let collect = collectionView!
    let label = gesture.view!




    //hier wird alles verschoben in die richtige position
    label.center = CGPoint(x: label.center.x, y: label.center.y + translation.y)


    tableView.frame = CGRect(x: 0, y: 86, width:self.view.frame.width, height: self.sizingLabel.frame.minY - 86)

    collect.frame = CGRect(x: 60, y: self.sizingLabel.frame.maxY, width: self.view.frame.width - 60, height: self.view.frame.height - self.sizingLabel.frame.maxY - tabBarHeight)



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



    }

    if gesture.state == UIGestureRecognizer.State.ended {
    print(„stop“)
    }
  • Wie ich vermutet hatte, Du musst die Layout Constraints und nicht die frames der Element ändern.

    Ich würde dafür einen Layout Constraint für das Label verwenden und die anderen Elemente daran ausrichten.

    Dann musst Du im UIPanGestureRecognizer nur ein Constraint anpassen und die anderen Elemente passen sich automatisch daran an.