Die Frage kann in zwei geteilt werden:
Pinch-Geste zoomen: Pinch-Zoomen ist einfacher mit %code% zu implementieren, da es standardmäßig unterstützt wird, ohne dass der Gestenerkenner hinzugefügt werden muss. Erstellen Sie eine %code% und fügen Sie die Ansicht, die Sie zoomen möchten, mit Pinch als Unteransicht hinzu ( %code% ). Vergessen Sie nicht, auch %code% selbst hinzuzufügen ( %code% ).
Konfigurieren Sie die Zoomstufen %code% min und max: %code% . Setzen Sie einen Delegaten für %code% und implementieren Sie %code% :
%code%
Was in diesem Fall Ihre %code% zurückgeben soll, und
Entsprechen Sie auch %code% und implementieren Sie:
%code%
Was sollte wahr werden. Dies ist der Schlüssel, der es uns ermöglicht, die Pan-Gesten-Erkennung mit dem internen Pinch-Gesten-Erkenner zu arbeiten.
Ziehen der Pan-Geste: Erstellen Sie einfach einen Pan-Gesten-Erkenner mit einem Ziel und fügen Sie ihn der Bildlaufansicht %code% hinzu.
Umgang mit Gesten: Der Pinch-Zoom funktioniert zu diesem Zeitpunkt gut, außer dass Sie den zweiten View-Controller präsentieren möchten, wenn der Pinch endet. Implementieren Sie eine weitere %code% -Methode, die benachrichtigt werden soll, wenn das Zoomen endet:
%code%
Und rufen Sie Ihre Methode auf, die den Detailansicht-Controller %code% darstellt, wir werden es in ein bisschen implementieren.
Der nächste Schritt ist die Pan-Geste. Ich lasse den Code sich erklären:
%Vor%Die Implementierung verschiebt %code% nach der Schwenkposition und ruft %code% auf, wenn die Geste endet.
Bevor wir %code% implementieren, gehen Sie zum Detailansicht-Controller und fügen Sie Eigenschaften hinzu, die %code% und %code% selbst enthalten. In vc1 implementieren wir nun %code% als solches:
%Vor%Stellen Sie in Ihrem %code% sicher, dass %code% und das Bild z. %code% und du wirst eingestellt.
Komplettes Arbeitsbeispiel:
%Vor%Ich habe zwei viewControllers:
ViewController1
Ein komplexer Stapel von Subviewcontrollern mit irgendwo in der Mitte einer imageView
ViewController2
Ein scrollView mit eingebettetem imageView
Was ich versuche zu erreichen, ist ein Übergang zwischen den beiden viewControllern, der ausgelöst wird, indem man die imageView von viewController 1 zwickt, so dass sie hineinzoomt und zu viewController 2 umschaltet. Wenn die Transition beendet ist, sollte die imageView gezoomt werden soweit es während des durch die Pinch-Geste ausgelösten Überganges gezoomt wurde.
Gleichzeitig möchte ich das Verschieben des Bildes während des Zoom-Übergangs unterstützen, so dass das Bild im Endzustand genau wie beim Zoom in den Ort umgewandelt wird, an den es gedreht wurde.
Bisher habe ich den Hero-Transitions-Pod ausprobiert und einen benutzerdefinierten ViewController-Übergang, den ich selbst geschrieben habe. Das Problem mit den Heldenübergängen besteht darin, dass das Bild im zweiten ViewController nicht richtig in den Endzustand eingerastet wird. Das Problem, das ich mit dem benutzerdefinierten ViewController-Übergang hatte, war, dass ich nicht gleichzeitig Zoomen und Schwenken zur gleichen Zeit arbeiten konnte.
Hat jemand eine Idee, wie man das in Swift implementiert? Hilfe wird sehr geschätzt.
scheint wie %code% Ihnen helfen sollte; Zum Beispiel können Sie in %code% block einen neuen Bildrahmen setzen und in %code% - den zweiten View-Controller (ohne Animation);