Ist transitionFromViewController nur eine bequeme Methode in iOS?

8

Ich bin mir nicht sicher, ob ich verstehe, was transitionFromViewController:toViewController:duration:options:animation:completion: tut genau. Ist es nur eine Bequemlichkeitsmethode?

Was ist zum Beispiel der Unterschied zwischen ...?

%Vor%

... und das?

%Vor%

Der Grund, warum ich frage, ist, dass ich in einigen Fällen die Kind-Controller-Ansicht zu einer bestimmten Unteransicht der Container-Controller-Ansicht hinzufügen muss. Die Verwendung von transitionFromViewController:toViewController:duration:options:animation:completion: gibt mir diese Option nicht.

    
hpique 16.11.2012, 23:49
quelle

3 Antworten

15

Ja, ich denke, Sie haben Recht: Sie scheinen funktional gleich zu sein (nicht sicher, dass wir es eine Bequemlichkeitsmethode nennen können, ohne die Details der Implementierung zu kennen, aber das könnte gut sein). Offensichtlich ist transitionFromViewController für die Containerreservierung des Ansichtscontrollers ausgelegt und animateWithDuration ist eine Allzweckanimation von Views.

Da Sie offensichtlich die Eindämmung durchführen, sollte man wahrscheinlich transitionFromViewController anstatt animateWithDuration verwenden. Es ist eindeutig und die Technik empfohlen von Apple . Und wenn Sie das fromViewController.view in einer Unteransicht haben, wird das neue toViewController.view zur selben Unteransicht hinzugefügt.

Ich würde auch vorschlagen, die fehlende willMoveToParentViewController und addChildViewController (die ich aus Gründen der Kürze weggelassen habe, aber ich schließe der Vollständigkeit halber):

%Vor%

Beachte auch, dass ich UIViewAnimationOptionTransitionCrossDissolve verwende. Wenn Sie Alphas manuell einstellen, vergessen Sie nicht, toViewController.view.alpha zu initialisieren, z. B.:

%Vor%     
Rob 17.11.2012, 03:06
quelle
1

Kurze Antwort :
Nein, es ist nicht nur eine Bequemlichkeitsmethode, da die Erscheinungsform für beide Kindersteuerungen unterschiedlich ist.

Lange Antwort :
Bezüglich - & gt;

%Vor%

Was passiert hinter der Szene, wenn Sie

anrufen? %Vor%

ist so etwas (natürlich ist das nicht vollständig)

%Vor%

Wenn Sie danach die Animation machen, "denkt" ViewController, dass seine Ansicht bereits sichtbar ist und ohne Animation dargestellt wurde. Das Gleiche gilt für den fromViewController. Während Ihrer Animation weiß der fromViewController nicht, dass die Ansicht gelöscht wird, da viewWill / DidDisappear nach der Animation mit Ihrem Aufruf an

aufgerufen wird %Vor%


Auf der anderen Seite - & gt;

%Vor%

macht so etwas

%Vor%

So lange Antwort kurz :
viewWillAppear und viewWillDisappear werden innerhalb des Animationsblocks aufgerufen und an true übergeben. Dies kann für Ihre Anwendung nützlich sein oder auch nicht, daher kann es einen Unterschied zwischen den beiden Methoden geben oder auch nicht.

    
Xatian 14.03.2015 12:26
quelle
0

Wie die Dokumentation sagt, soll es für den Übergang zwischen zwei untergeordneten Ansichtscontrollern verwendet werden, nicht für zwei Ansichten desselben untergeordneten Ansichtscontrollers.

In Ihrem ersten Code-Snippet übergeben Sie dasselbe toViewController wie die ersten beiden Parameter. Es ist beabsichtigt, dass dies zwei verschiedene View-Controller sind, nicht derselbe.

Ihr zweites Beispiel ist besser geeignet, wenn Sie nur Ansichten desselben View-Controllers wechseln.

    
Andy Obusek 16.11.2012 23:53
quelle

Tags und Links