2010-03-13 6 views
0

Je suis presque fini avec ma première application iPhone et tout fonctionne très bien - à l'exception d'un très petit bug d'affichage:SDK iPhone - Transition à un problème d'affichage NavigationController

Mon crible à étoiles est un UIView (Fullscreen) sans Navigationbar ou barre d'outils. Si je tape sur un bouton de démarrage, il y a une animation UIViewAnimationTransitionFlipFromRight qui se déplie au contrôleur principal de navigation:

-(IBAction) switchViewToMainMenu { 
[UIView beginAnimations:@"Flip View" context:nil]; 
[UIView setAnimationDuration:1.25]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:self.window cache:YES]; 
[self.navController viewWillAppear:YES]; 
[self.startScreenViewController viewWillDisappear:YES]; 

[self.startScreenViewController.view removeFromSuperview]; 
[self.window addSubview:navController.view];  

[self.startScreenViewController viewDidDisappear:YES]; 
[self.navController viewDidAppear:YES]; 
[UIView commitAnimations]; 
self.startScreenViewController=nil; 
[startScreenViewController release]; 

}

Cela fonctionne bien sauf un petit problème:

Lorsque la navigation La vue de contrôleur apparaît (retourne), la barre de navigation sur le dessus est quelques pixels trop haut (c'est une barre blanche où la barre de navigation devrait être). Lorsque l'animation est terminée, la barre de navigation descend à la bonne position. Cela ne semble pas très beau ...

Des idées pour résoudre ce problème?

Répondre

0

Nous avons trouvé une solution en utilisant le paramètre setAnimationDelay qui permet de charger et de mettre en vue la barre d'onglets. Je pensais que vous deviez modifier un peu le code pour utiliser setAnimationDelay. Vous devez utiliser setyanimationdelay juste avant la setanimationtransition et la setanimationtransition juste avant les commitAnimations. Donc, le code ci-dessus devrait se terminer à:

[UIView setAnimationDelay:2]; // 2 seconds delay seems to be working for us 
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:self.window cache:YES]; 
[UIView commitAnimations]; 
Questions connexes