UIVIew animation - Skalierung + Übersetzung
Habe ich eine Ansicht, die ich sein will, skaliert und übersetzt in eine neue Position, die von der Animation. Ich habe versucht, es zu erreichen, mit dem folgenden code:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:kDurationForFullScreenAnimation];
[[self animatingView] setFrame:finalRect];
[UIView commitAnimations];
Den Effekt dieses Codes ist, zuerst die Ansicht ändert sich die Größe der finalRect und dann übersetzt es in die neue Position. d.h. Die Skalierung Teil ist nie animiert. Die Ansicht wird lediglich transformiert, um die neue Größe und dann übersetzt.
Dieses Problem ist bereits besprochen, in einigen anderen threads, aber keiner von Ihnen ziehen ein Fazit. Eine Lösung existiert jedoch, verwenden Sie einen timer und stellen Sie die frame-jeder Zeit in der timer-callback, aber es hat einen performance Nachteil.
Was ist die am besten geeignete Lösung für dieses problem, auch, warum im ersten Fall wird dieses problem auftreten?
Dank
InformationsquelleAutor Raj Pawan Gumdal | 2010-08-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einstellung der Rahmen hat weder eine Skala noch eine übersetzung. Sie sind entweder mit dem falschen Begriffe oder Sie verwenden das falsche Werkzeug für den job. Skalieren und zu übersetzen, sind beide fertig mit Core-Grafik-Affine Transformationen, wenn Sie schauen, um Einfluss auf die UIView (im Gegensatz zu der Schicht, die Core Animation verwandelt).
Skalieren und anzeigen verwenden
Zu übersetzen, verwenden Sie
Animieren diese, wickeln Sie Sie in einer animation block. Wenn Sie möchten, verwandeln Sie die Ansicht mit beiden, dann müssen Sie zu verketten.
Wenn Sie nicht wollen, Skalierung und translation (transformiert), dann ist das, was du meinst, ist, dass Sie wollen, ändern Sie die Ansicht, die Grenzen und position. Diese verändert durch Aufrufe
Wo newRect und newCenter sind ein CGRect und CGPoint jeweils vertreten, dass die neue position auf dem Bildschirm. Auch diese müssen verpackt in einer animation block.
InformationsquelleAutor Matt Long
Hier ist ein Beispiel mit block-animation:
InformationsquelleAutor mad pig
Probieren Sie diese Lösung :
diese operation ist nicht kommutativ. Die Reihenfolge ist die Umkehrung der Reihenfolge bei der Verwendung von convenience-Funktionen, die für die Anwendung einer Transformation auf ein anderes.
- Und Sie können diesen Vorgang : zum Beispiel (entfernen der Skala) :
InformationsquelleAutor user3391686