Custom View oder jede Menge Subviews | Drag And Drop in ScrollView

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

  • Custom View oder jede Menge Subviews | Drag And Drop in ScrollView

    Hallo ihr,
    nach langem mal wieder eine Frage von mir. Ich könnte etwas Erfahrung / Ansatzideen gebrauchen, weil ich in dem Bereich etwas unerfahren bin.

    Folgendes möchte ich umsetzen: in einer bestehenden iOS App eine ScrollView, in dessen View eine dynamisch dargestellte Grafik zu sehen ist. Die Grafik, sage ich der Einfachheit halber, ist ähnlich wie ein UML-Diagramm (zum Beispiel Klassen- oder Sequenz-). Wichtig ist einfach nur: die Grafik besteht aus mehreren Elementen, die wiederum wie in einem Klassendiagramm aus Rechteck mit Text darin bestehen, und die miteinander per Linien (sehr fette, ebenfalls Text enthaltend) verknüpft sind. Elemente sollen per Touch bewegt werden können, SwipeGestures sollen erkannt werden, ein Tipp auf eine leere Stelle soll ein neues Element erzeugen, die ScrollView soll keine Einfinger-Swipes abfangen sondern mit zwei Fingern arbeiten.

    So, das hört sich erst einmal banal an, bei folgendem bin ich mir nicht sicher:
    • Darstellung der Grafik: Dabei habe ich aus meiner Sicht zwei Möglichkeiten: Entweder einfach eine View, diese subclassen und mittels drawRect die Sachen einzeichnen, Touch mit touchesBegan() und touchesMove() abfangen, je neu zeichnen etc. Oder: Die Elemente sind einzelne Views, die dann alle in die MainView als Subview hinzugefügt werden, die Touches mit GestureRecognizer abfangen.
      • Wie geht ihr bei so etwas vor?
      • Wie kann ich die Größe der ScrollView ContentView dynamisch beim Zeichnen verändern?
      • Wie kann ich erreichen, dass der ScrollView mit zwei Fingern bedient werden muss und restliche Events durchgelassen werden?
    • Des weiteren soll es eine Bar unter der ScrollView geben, aus welcher man Elemente in die ScrollView hineindraggen kann. Eine Idee, wie man das umsetzen könnte?


    Freue mich über alle Ansätze oder Ideen :)