Im Moment erstelle ich einige Übergänge und transformiere über CGAffineTransform
für eine Panning-Ansicht und ich laufe wegen der Transformationsleistung unter iOS 7
und iPhone 4
in Schwierigkeiten.
Ich tauchte in Istruments und protokollierte das Zeug und das schwere Heben ist getan, wenn ich meine Transformationen auf die Ansicht anwende.
Aktuelle Implementierung
%Vor%Workaround für iOS 7
%Vor%Frage
Warum ist die Leistung auf iOS 7 und meinem iPhone 4 mit CGAffineTransforms
so schlecht? Weil es die gleiche Sache mit dem Offset tut, dann die Rahmeneinstellung in der Problemumgehung. Wenn ich UIView.animateWithDuration()
mit transform verwende, läuft es auf 60 fps. Was kann ich tun, um die gesamte Implementierung auf meiner iOS 7 Basis nicht neu zu schreiben?
UPDATE 28. Juli Herausgefunden, dass AutoLayout in diesem Problem möglich ist. Hier ist ein TimeProfiler-Stack von meinen aktuellen Anrufen:
Jetzt stehe ich in meiner aktuellen Implementierung vor einem großen Problem, da ich auf AutoLayout angewiesen bin. Was ist die einfachste Lösung, um diesen Ärger auf iOS 7 zu lösen?
Während Sie Recht haben, dass sie das Gleiche tun, ist es unter der Haube nicht so einfach - es gibt Matrixmultiplikationen, die überall hin gehen. Mehr dazu finden Sie hier .
Es ist merkwürdig, dass wenn Sie genau das tun, es Ihre Leistung beeinflusst - aber ich denke, dass Ihr Layout kompliziert ist und das erneute Rendern viel Zeit in Anspruch nimmt; Ich hatte tatsächlich das gleiche Problem wie vor einer Woche, also hier ist, was mir geholfen hat:
Sie können auch versuchen, diese Transformation im asynchronen Aufruf zuzuordnen und sehen, ob das hilft:
%Vor%Und wenn Sie wirklich etwas Besonderes sein möchten, verwenden Sie POP Framework von Facebook . Es ist großartig für das, was Sie wollen, und es ermöglicht Ihnen, einige ausgefallene Dinge wie Bounce, Sprungkraft usw. zu tun. Hier ist, wie Sie es verwenden können:
%Vor%Bearbeiten: Wenn Sie nur die Ansicht verschieben, verwenden Sie die Eigenschaft .center, nicht den Frame. Es spart Ihnen die Notwendigkeit, Höhe / Breite wieder zu definieren und gibt Ihnen eine klarere Vorstellung von Ihren Absichten.
Tags und Links objective-c ios core-animation swift cgaffinetransform