Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone page curl transition animation

I'm trying to instigate a page curl transition with a UIImageView in a Window. This code is in my main init method :

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationDelay:delay];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDidStopSelector:@selector(animCompleteHandler:finished:context:)];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:splashImage cache:YES];

splashImage.frame = CGRectMake(-320, 0, 10, 10);
//[splashImage removeFromSuperview];

[UIView commitAnimations];

The image animates position and size but no curl. If I uncomment the removeFromSuperView it just vanishes instantly. Any ideas?

UPDATE:

Have changed the code so it uses Lars fantasticlly neat way of triggering an animation and including the animation and callback ...

[UIView animateWithDuration:1.5
                      delay:delay
                    options: UIViewAnimationTransitionCurlUp 
                 animations:^{splashImage.alpha = 0;}
                 completion:^(BOOL finished){[splashImage removeFromSuperview];}
 ];

Unfortunately the page curl just doesn't happen. It does fade though.

I'm not sure if this is something to do with the syntax or the fact that the SplashImage is a UIImageView class in the UIWindow object of my main view. Maybe it needs to be in a UIView to create the transition.

like image 747
Lee Probert Avatar asked Sep 08 '10 08:09

Lee Probert


1 Answers

Try something like:

[UIView transitionWithView:splashImage 
        duration:1.5 
        options: UIViewAnimationOptionTransitionCurlUp 
        animations^{
            splashImage.frame = CGRectMake(-320, 0, 10, 10);
        } 
        completion:^(BOOL finished){
            [splashImage removeFromSuperview];
            //animCompleteHandlerCode..
        }
];

Not tested and maybe some syntax errors but give it a try!

Or maybe this is better:

[UIView animateWithDuration:1.5
        delay:delay
        options: UIViewAnimationOptionTransitionCurlUp 
        animations^{
            splashImage.frame = CGRectMake(-320, 0, 10, 10);
        } 
        completion:^(BOOL finished){
            [splashImage removeFromSuperview];
             //animCompleteHandlerCode..
        }
];
like image 177
LarsJK Avatar answered Oct 21 '22 13:10

LarsJK