Hallo,
ich verzweifle gerade an einer App für das iPad, in der ich Objekte vom Typ UIViewController mit derm Finger verschiebe und auch zoomen möchte.
Der Aufbau:
Die Hauptview hat links einen View, aus dem ich die Sachen abholen kann und rechts einen View für die Ablage. Im rechten View ist ein Scrollview, damit ich den Bereich vergrößern kann.
Mit einem UIPanGestureReconizer ziehe ich die Objekte von links nach rechts. Beim Ablegen erstelle ich ein neues Objekt (UIViewController) und füge es mit addSubView dem Scrollview hinzu. Das Objekt bekommt dann wieder einen UIPanGsetureRecognizer verpasst, damit ich anschließend im rechten Bereich weiter hin und herschieben kann.
Das funktioniert.
Mit einem UIPinchGestureRecognizer kann ich die Scrollview beliebig zoomen.
Das funktioniert auch super!
Wenn ich in den rechten Bereich hineinzoome und dann Objekte ablege, werden sie auch kleiner dargestellt und können weitergeschoben werden.
Auch das geht wie gewünscht!
Aber:
Wenn ich nach dem Ablegen eines Objektes mit dem Pinch zoome, dann kann ich die Objekte teilweise nicht mehr weiterschieben oder meine Berechnungen (liegt ein Objekt auf einem anderen oder auf bestimmten Aktionsfeldern) gehen weit daneben.
Eigentlich rechne ich alle Frames mit [scrollView convertRect:frame toView:rechteView] auf den rechten View um und das funktioniert auch, solange ich nicht erneut zoome.
Zum Beispiel sind unten rechts Flächen, die bestimmte Aktionen auslösen. Lege ich ein Objekt ab und ziehe es anschließend nach unten, reagiert die Fläche, sobald das Objekt mit CGRectIntersectsRect eine Überlappung erkennt.
Wenn ich vorher den Bereich kleiner zoome, dann reagieren die Flächen schon, wenn das Objekt noch weit darüber ist.
Was mich dann noch sehr stutzig macht, ist die Tatsache, dass meine Objekte nach dem Hineinzoomen im Frame einen passenden Origin haben, aber die Size deutlich vergrößert ist.
Kann mich da mal jemand auf die richtige Spur bringen?
ich verzweifle gerade an einer App für das iPad, in der ich Objekte vom Typ UIViewController mit derm Finger verschiebe und auch zoomen möchte.
Der Aufbau:
Die Hauptview hat links einen View, aus dem ich die Sachen abholen kann und rechts einen View für die Ablage. Im rechten View ist ein Scrollview, damit ich den Bereich vergrößern kann.
Mit einem UIPanGestureReconizer ziehe ich die Objekte von links nach rechts. Beim Ablegen erstelle ich ein neues Objekt (UIViewController) und füge es mit addSubView dem Scrollview hinzu. Das Objekt bekommt dann wieder einen UIPanGsetureRecognizer verpasst, damit ich anschließend im rechten Bereich weiter hin und herschieben kann.
Das funktioniert.
Mit einem UIPinchGestureRecognizer kann ich die Scrollview beliebig zoomen.
Das funktioniert auch super!
Wenn ich in den rechten Bereich hineinzoome und dann Objekte ablege, werden sie auch kleiner dargestellt und können weitergeschoben werden.
Auch das geht wie gewünscht!
Aber:
Wenn ich nach dem Ablegen eines Objektes mit dem Pinch zoome, dann kann ich die Objekte teilweise nicht mehr weiterschieben oder meine Berechnungen (liegt ein Objekt auf einem anderen oder auf bestimmten Aktionsfeldern) gehen weit daneben.
Eigentlich rechne ich alle Frames mit [scrollView convertRect:frame toView:rechteView] auf den rechten View um und das funktioniert auch, solange ich nicht erneut zoome.
Zum Beispiel sind unten rechts Flächen, die bestimmte Aktionen auslösen. Lege ich ein Objekt ab und ziehe es anschließend nach unten, reagiert die Fläche, sobald das Objekt mit CGRectIntersectsRect eine Überlappung erkennt.
Wenn ich vorher den Bereich kleiner zoome, dann reagieren die Flächen schon, wenn das Objekt noch weit darüber ist.
Was mich dann noch sehr stutzig macht, ist die Tatsache, dass meine Objekte nach dem Hineinzoomen im Frame einen passenden Origin haben, aber die Size deutlich vergrößert ist.
Kann mich da mal jemand auf die richtige Spur bringen?