4 Stimmen

Die Unterschiede zwischen [UIView transitionWithView...] und [UIView transitionFromView...]

Ich habe derzeit eine Ansicht, die in einer Ansicht enthalten ist. Der Haupt-View-Controller (übergeordnete Ansicht) hat eine Eigenschaft, die im Interface Builder mit der Unteransicht verbunden ist. Die Unteransicht enthält eine Schaltfläche. Ich möchte, dass die Schaltfläche die Unteransicht umdreht, während die Hauptansicht stationär bleibt. Ich habe derzeit den folgenden Code in meiner IBAction für die Schaltfläche:

[UIView transitionWithView: self.subViewFront
                  duration: 1.0
                   options: UIViewAnimationOptionTransitionFlipFromTop
                animations: nil
                completion: nil];
[UIView commitAnimations];
[[self view] addSubview: self.subViewBack;

Dieser Code funktioniert gut, jedoch habe ich Folgendes bemerkt, als ich das API-Referenz von Apple überprüft habe:

Die Verwendung der Methoden in diesem Abschnitt wird in iOS 4 und später nicht empfohlen. Verwenden Sie stattdessen die blockbasierten Animationsmethoden.

Nach diesem Ratschlag habe ich versucht, den folgenden Code zu verwenden:

[UIView transitionFromView: self.subViewFront
                    toView: self.subViewBack
                  duration: 1.0
                   options: UIViewAnimationOptionTransitionFlipFromTop
                completion: nil];

Es scheint, als ob es dasselbe tun sollte wie mein ursprünglich geschriebener Code. Allerdings, wenn ich meine App mit diesem Code ausführe, wird meine gesamte Ansicht (übergeordnete und untergeordnete Ansicht) umgedreht, anstatt nur die Unteransicht. Sollte diese Methode als Ersatz für die ursprüngliche Methode verwendet werden, die ich benutzt habe, oder übersehe ich etwas? Danke.

4voto

Kristofer Sommestad Punkte 3051

Ich hatte das gleiche Problem (mit dem Elternelement, das stattdessen animiert wurde), konnte es aber lösen, indem ich die beiden Ansichten (subViewFront und subViewBack) stattdessen zu einer Containeransicht hinzufügte.

Fügen Sie also Ihre beiden Ansichten stattdessen zu einer Container-UIView hinzu und verwenden Sie dann den -transitionFromView:... genau wie in Ihrem Beispiel angegeben:

UIView *container = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease];
[self.view addSubview:container];

...

[container addSubview:self.subViewFront];
[container addSubview:self.subViewBack];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X