Ich möchte die gleiche Animation erstellen wie in App Phibrow . Bitte sehen Sie das folgende Video für weitere Details: - Ссылка
< a href="https://i.stack.imgur.com/PJsCP.png">
> Ich habe versucht, diese Animation mit UIPinchGestureRecognizer
, UIRotationGestureRecognizer
und UIPanGestureRecognizer
zu bekommen. Aber noch nicht in der Lage, diese Animation zu bekommen.
Gibt es eine Möglichkeit, diese Animation zu erhalten?
Ich denke, dass dieser Code für Sie funktioniert. Ich habe zwei Ansichten FirstView und SecondView deklariert und separate Gesten für beide Ansichten hinzugefügt wie im Falle von panGesture zum Beispiel:
%Vor%für Pinch und Rotation habe ich die gleiche Methode wie oben verwendet, um eine Geste hinzuzufügen. und für Ihren Fall müssen Sie Pinch und Rotation Gesten außer pan Geste für beide Ansichten gleichzeitig arbeiten, so überprüfen Sie einfach, welche Ansicht und anwenden Transformation für andere Ansicht auch.
%Vor% Das Problem, das ich sehe, ist, dass die Übersetzung wie gesture.translation(in: view)
, z. im Koordinatensystem von view
. Ist das view
in Ihrem Beispiel ein gesture.view.superview
? Sie interessieren sich dafür, wie viel gesture.view
in seinem superview
-Koordinatensystem verschoben wurde, daher muss diese Bedingung wahr sein: view == gesture.view.superview
.
Das zweite Problem ist die Übersetzung von transform
- es wird nicht korrekt sein, wenn Rotation und / oder Skalierung keine Identität sind. Um das gesture.view
richtig zu verschieben, sollten Sie seine Position center
ändern, die unabhängig von der Ansichtsrotation oder Skalierung korrekt bleibt:
Vielleicht Problem in der Reihenfolge. Sie wenden die Übersetzung an, nachdem Sie die Drehung angewendet haben. Bei der Transformation rotiert. Dies bedeutet, dass Ihr Zielobjekt gedreht und dann entsprechend der Ration übersetzt wird. Wenn Sie also das Objekt auf Float.Pi drehen und versuchen, das Objekt zu bewegen, wird es sich in die entgegengesetzte Richtung bewegen. Stattdessen mussten Sie zuerst das Objekt verschieben und dann die existierende Transformation anwenden.
%Vor%