2011-01-13 7 views
1

Ich implementiere eine sehr einfache Flip-Animation, aber der Flip ist nicht da.UIViewAnimationOptionTransitionFlipFromRight nicht von Xcode erkannt

ich ein Beispiel aus der Dokumentation als Vorlage verwenden, jetzt Apple empfehlen Sie Blöcke für Animationen verwenden und dass dies der Ansatz: (von der docs)

[UIView transitionWithView:containerView 
      duration:0.2 
      options:UIViewAnimationOptionTransitionFlipFromLeft 
      animations:^{ [fromView removeFromSuperview]; [containerView addSubview:toView]; } 
      completion:NULL]; 

Wrapping die beiden Ansichten, die Sie möchte zwischen in einem Container wechseln. Ich mache es so.

UIView *container = [[UIView alloc] initWithFrame:target]; 
[self.view addSubview:container]; 
[container addSubview:productImage]; 

UIView *background = [[UIView alloc] initWithFrame:target]; 
[background setBackgroundColor:[UIColor darkGrayColor]]; 
[background setAlpha:0.1f]; 

[UIView transitionWithView:container 
        duration:0.8 
        options:UIViewAnimationOptionTransitionFlipFromRight 
       animations:^{ 
        [[[container subviews] objectAtIndex:0] removeFromSuperview]; 
        [container addSubview:background]; 
       } 
       completion:NULL]; 

Zwei seltsame Dinge passieren: Es gibt keinen Übergang ist, der Behälter zeigt das product (vom Typ UIImageView), tauscht es dann mit der Hintergrundansicht. Keine Animation.

Die zweite Sache ist, was mich dazu gebracht zu glauben, dass dies nicht der üblicher Tippfehler war, dass die

UIViewAnimationOptionTransitionFlipFromRight 

nicht von Xcode erkannt wird, wird es nicht automatisch vervollständigt, ist es nicht hervorgehoben. Xcode wird das nur tun, wenn ich die veraltete verwenden:

UIViewAnimationTransitionFlipFromRight //i.e. without the Option part 

Ich begann dann meine SDK-Version zu prüfen usw. alles scheint auf 4,2 gesetzt werden, XCode ist Version 3.2.5, beide Ziel- und Projekteinstellungen haben bauen und setzen Sie das Ziel auf 4.2.

Was fehlt mir hier?

Hope eine Reihe von geschulten Augen können mir helfen :) Vielen Dank im Voraus.

Antwort

-1

Sie Dieser Code wird

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 


UIViewAnimationTransition transition = UIViewAnimationTransitionFlipFromRight; 
[UIView setAnimationTransition:transition forView:[self.navigationController view] cache:NO]; 


[UIView commitAnimations]; 

Prost

+0

Hallo Aditya und danke. Wie macht man das in einem Block? – RickiG

+0

Ich nehme an, dass Sie diese Animation beim Start der Anwendung verwenden, setzen Sie diesen Code in eine Methode und rufen Sie diese Methode beim Start auf, indem Sie etwas wie diese aufrufen ... Selbstwiederholungen: NEIN]; wobei inittab die Methode wäre, die den Animationsblock des Codes enthält. – Aditya

+2

Warum würden Sie das vermuten? Ich denke, Ricki möchte die neue Block-API verwenden. Dies ist die alte Art, Animationen zu erstellen. Apples Dokumentation sagt beginAnimations: context: sollte in neuen iOS 4-Anwendungen vermieden werden. Ich habe jedoch keine Lösung. Ich habe das selbe Problem. –

3