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.
Ist das nicht das gleiche wie + [CATransaction setDisableActions: JA] innerhalb eines Animationsblocks? –
@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. –
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