2009-05-27 3 views
3

Ich habe einen Kern Animationsblock, wo ich eine Methode aufrufen, die einen View-Controller geladen wird. Es gibt einen benutzerdefinierten Übergang zwischen zwei View-Controllern. Wenn der View-Controller jedoch die Schnittstelle aufbaut, wird all dies von der Kernanimation beeinflusst. Obwohl es in einigen interessanten Effekten führt, möchte ich nicht, dass;)Wie kann ich einen Codeabschnitt in einem Kernanimationsblock davon abhalten, animiert zu werden?

[UIView beginAnimations:@"jump to view controller" context:self]; 
[UIView setAnimationDuration:0.55]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 

// some animated property-changes here... 

[self loadViewControllerForIndex:targetIndex]; // everything that happens in this method shall not be animated 

UIViewController *controller = [viewControllers objectAtIndex:targetIndex]; 
[controller viewWillAppear:YES]; 
[controller viewDidAppear:YES]; 

[UIView commitAnimations]; 

Leider kann ich nicht, dass ein Teil aus dem Block bewegen.

Antwort

10

Sie sollten in der Lage sein, Animationen für einen Abschnitt des Blocks UIView Animation zu unterdrücken, indem Sie diesen Abschnitt in einem CATransaction Einwickeln und deaktivieren Animationen für sie:

[CATransaction begin]; 
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];  

// Changes to disable animation for here 
[CATransaction commit]; 
+0

Ist das nicht das gleiche wie + [CATransaction setDisableActions: JA] innerhalb eines Animationsblocks? –

+0

@Andrew - Ja, '-setDisableActions:' wurde in iPhone OS 3.0 und Snow Leopard hinzugefügt und ist identisch mit dem '-setValue: forKey:' Ich benutze oben. Ich hatte das von einem älteren Code, den ich in 2.0 verwendet habe, gepackt. –

+0

Das funktioniert gut für mich, danke für das Teilen. Außerdem ist es besser als das [UIView setAnimationsEnabled: NO] -Ansatz, den jemand anders hier gepostet hat (und anscheinend letzte Nacht gelöscht wurde). Weil dieser Ansatz einfach * alle * Animationen ausgeschaltet hat, einschließlich eines Anrufers, der sich vielleicht selbst eingerichtet hat. – uliwitness

Verwandte Themen