Frage

Ich habe einen einzigen UIView für eines aus einer Gruppe von Elementen zeichnen. Das heißt, meint eine UIView Unterklasse gesagt werden, um ein Quadrat zu zeichnen, Kreis oder Dreieck zum Beispiel.

Ich mag einen Übergang haben, die Ansicht zu drehen, so dass die UIView eine andere Form auf halbem Weg Punkt zieht, so sieht es aus wie ich zu einer anderen Ansicht bin Übergang, aber wirklich bin neu zu zeichnen ich nur die Einzelansicht auf halbem Weg Punkt des Übergangs.

Gibt es eine Möglichkeit, dies zu tun, ohne zu mit zwei verschiedenen UIViews zurückgreifen und sie aus in der Animation Block tauschen? Es wäre ein bisschen ungeschickt sein für mich zu verfeinern, was ich habe den Swap-Mechanismus verwenden.

Im Idealfall alles, was ich brauche, ist ein Rückruf oder eine Benachrichtigung, dass die Animation auf dem halben Weg Punkt ist, und dann kann ich die Ansicht mit der neuen Form dann neu gezeichnet werden.

Vielen Dank für jede Hilfe!

War es hilfreich?

Lösung

Auch wenn Sie den Mittelpunkt Ihrer Flip-Animation wussten, ich glaube nicht, den Inhalt der Ansicht Mitte Animation neu gezeichnet würde alles tun. Ich denke, dass der Inhalt des Ebenenansicht zu Beginn der Animation im Cache gespeichert und nicht wie die Animation Erlöse ändern. Auch Ihre Ansicht würde invertiert am Ende, von links nach rechts, am Ende der Animation, wenn man nicht ein andere Ansicht dahinter hat.

Wenn Sie dies als eine benutzerdefinierte Animation tun, könnten Sie diese in zwei Hälften brechen etwas mit wie Mike Lee Lemur Flip Implementierung , die ich in diese Antwort . Nach der ersten Hälfte der Animation, können Sie die Ansicht der Inhalt neu zu zeichnen und die Animation abgeschlossen ist, endet zurück, wo Sie begonnen haben.

Allerdings scheint es mir mehr plump nicht wechseln Ansichten in Reaktion auf den Übergang. Es wird sicherlich viel mehr Code, um zu tun.

Andere Tipps

Sie können versuchen, smth wie dies zu tun. Zum Beispiel ist Ihre animationDuration Eigenschaft auf 2.0f gesetzt. so, die auf halbem Weg Punkt ist 1 Sekunde, so können Sie

  

[self perform: @selector (yourCallbackMethod) withobject: nil afterDelay: 1.0f];

Der einzige Weg, ich weiß, dass Sie dies tun können, ist neu erstellen die Animation Core Animation verwenden und dann die Animation in der presentationLayer mit Hilfe eines Timers zu überwachen. Es gibt keine KVO in Core Animation Ebenen, so dass Sie es explizit zu überwachen haben.

Mit anderen Worten, es ist wahrscheinlich nicht wert. Ich schlage vor, Sie denken an einen anderen Weg, um Ihr Problem zu lösen.

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