Frage

Ich habe eine app, dass Anwendungen CGcontext Dinge auf eine UIImageView zu ziehen, dass der Benutzer zieht Touch-Ereignisse verwenden, und ich möchte in der Lage sein, die Zeichnungen durch den Benutzer rückgängig zu machen.

Edit:


Ich versuche, meine touchesBegan zu speichern theUIImage am Anfang einer Berührung mit dem NSUndoManager

zu verwenden,

Und dann wie kann ich es verwenden, um einen UIAlertView rückgängig zu machen verwenden.
Was bedeutet, möchte ich eine Methode von meinem UIAlertView nennen, dass Undo ist dann eine andere, wiederholen, aber ich weiß nicht, wie dies zu erreichen.
Bitte Hilfe

War es hilfreich?

Lösung

I write-Grafik-Software für das iPhone ( http://www.layersforiphone.com/ ) und ich verbrachte eine Weile versucht, dieses herauszufinden. Das Problem ist, CGContexts ist nicht von Natur aus „rückgängig gemacht werden.“ Sie können nicht ein Rechteck oder wiederherstellen einen Teil unfill Sie über gezogen haben. Die Daten sind einfach nicht da. Nach meiner Erfahrung ist die beste Wette in der Region einen „save“ -Methode, dass Aussehen und wird geändert erstellen speichert die Bilddaten in dieser Region auf den Rückgängig-Stapel vor dem Zeichnen Operationen ausgeführt werden. Dann, wenn Sie rückgängig machen möchten, können Sie die modifizierte Region nehmen und es wieder aus Ihrer gespeicherten Daten.

Ich habe mich für diesen Ansatz unabhängig von NSUndoManager in Ebenen zu implementieren, da man im Grunde einen Stapel von CGImageRefs und CGRects brauchen und wo es sich nicht gut auf die NSUndoManager.

Hinweis: Technisch gesehen, könnte man einfach speichert eine Kopie des gesamten Bildes jedes Mal geändert wird. Dies ist eine schlechte Verwendung von Speichern, obwohl - da Sie nur einen kleinen Bereich ändern können. Wenn Sie eine großzügige Undo-History (+ 10 Stufen) haben wollen, es ist auf jeden Fall lohnt sich für kleine Unter-Bilder in Ihrer Zeichnung Raum zu speichern und wiederherstellen.

Ich hoffe, das hilft! Ich weiß, es ist nicht eine große Lösung - Sie wirklich nicht viel mit dem integrierten APIs tun können. Wenn Sie eine allgemeine Lösung für dieses Problem schaffen Ich denke, eine Menge Leute daran interessiert wäre, aber!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top