2010-09-08 5 views
5

Je suis en train d'instiguer une transition de page curl avec un UIImageView dans une fenêtre. Ce code se trouve dans ma méthode init principale:iPhone page curl transition animation

[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]; 

L'image anime la position et la taille mais pas de roulage. Si je décommente le removeFromSuperView, il disparaît instantanément. Des idées?

MISE À JOUR:

ont changé le code de sorte qu'il utilise Lars fantasticlly belle façon de déclencher une animation et y compris l'animation et le rappel ...

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

Malheureusement, la page curl ne se passe pas . Cela s'estompe cependant.

Je ne sais pas si c'est quelque chose à voir avec la syntaxe ou le fait que le SplashImage est une classe UIImageView dans l'objet UIWindow de ma vue principale. Peut-être qu'il doit être dans un UIView pour créer la transition.

Répondre

8

Essayez quelque chose comme:

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

Non testé et peut-être quelques erreurs de syntaxe, mais lui donner un essai!

Ou peut-être ce qui est mieux:

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

Je n'ai pas encore essayé mais je suis intriguée par votre code! Que fait le^faire? Est-ce une façon d'intégrer des fonctions? –

+1

Ce sont des blocs nouveaux pour iOS 4.0. Je vous encourage à lire sur les blocs. Excellent ajout à iOS. Consultez ceci: http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/index.html Si je comprends bien votre code, ce que vous voulez faire est de boucler une page et en même temps bouger et l'échelle? – LarsJK

+0

bien le déplacement et la mise à l'échelle n'est pas vraiment important ... Je voulais juste déclencher la transition. Utilisait cette transformation juste pour tester que ça fonctionnait. J'ai juste besoin de l'image splash pour faire une boucle. Pour déclencher cela comme une transition, j'ai besoin de faire quelque chose à la vue. Cela fonctionnerait-il avec "caché"? Quoi qu'il en soit, je cours quelques tests maintenant. Merci pour vos commentaires. –

1

@Larsaronen: Merci pour les exemples, il était exactement ce qu'il me fallait! Je voulais juste une boucle simple page alors que les images sont affichées en premier, alors j'ai utilisé un alpha de 1,0 au lieu de 0, et définissez le rappel d'achèvement à zéro:

// set a page curl animation for the specified UIImageView control 
- (void) setAnimationPageCurl:(UIImageView *)imageView { 

    [UIView transitionWithView:imageView 
         duration:1.5 
         options:UIViewAnimationOptionTransitionCurlDown 
        animations:^ { imageView.alpha = 1.0; } 
        completion:nil]; 
}