13

I had this piece of code im my app:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:imgView cache:YES];
    imgView.image = img2;
[UIView commitAnimations];

But use of this method is discouraged in iOS 4.0 and later, and I should use transitionWithView:duration:options:animations:completion:

I cant get this to work properly. Can anyone help me? Thx!

FransGuelinckx
  • 147
  • 2
  • 7

2 Answers2

19
[UIView transitionWithView:imgView    // use the forView: argument
                  duration:1          // use the setAnimationDuration: argument
                   options:UIViewAnimationOptionTransitionFlipFromLeft 
                          // check UIViewAnimationOptions for what options you can use
                animations:^{         // put the animation block here
                              imgView.image = img2;
                           }
                completion:NULL];     // nothing to do after animation ends.
kennytm
  • 510,854
  • 105
  • 1,084
  • 1,005
  • @KennyTM: are you able to clarify using [NULL vs nil for blocks](http://stackoverflow.com/questions/5766208/which-is-the-right-one-nil-or-null-to-mark-no-objective-c-block)? – penfold Oct 02 '11 at 08:12
3

I made this function based on your code:

- (void)flipCurrentView:(UIView*)oldView withNewView:(UIView*)newView reverse:(BOOL)reverse
{
    newView.alpha = 0;
    [UIView transitionWithView:newView
                      duration:1      
                       options:UIViewAnimationOptionTransitionFlipFromLeft 
                    animations:^{        
                        oldView.alpha = 0;
                        newView.alpha = 1;
                    }
                    completion:^(BOOL finished){
                        if(reverse){
                            [self flipCurrentView:newView withNewView:oldView reverse:NO];
                        }
                        finished = YES;
                    }];   
}
Mickael West
  • 341
  • 4
  • 6