2010-07-12 12 views
4

Je voudrais permettre à l'orientation de pivoter selon l'appel de shouldAutorotateToInterfaceOrientation à mon contrôleur de vue. Cependant, je voudrais le faire immédiatement et ignorer l'animation en rotation (celle qui résulte dans les coins montrant l'animation rotative noire pendant que l'ensemble de la vue tourne.)Existe-t-il un moyen d'ignorer l'animation d'une rotation à partir de shouldAutorotateToInterfaceOrientation?

Est-ce que quelqu'un sait s'il existe un moyen de spécifier que vous voulez qu'il se produise immédiatement (sans animation)?

Répondre

2

Pour faire ce que vous voulez, vous devez manuellement faire pivoter (et redimensionner) votre vue.Il n'y a aucune propriété que vous pouvez changer pour faire facilement ce que vous souhaitez. le code pour enregistrer les événements de rotation de périphérique

- (void)viewDidLoad { 
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) 
      name:UIDeviceOrientationDidChangeNotification object:nil]; 
//Whenever the device orientation changes, orientationChanged will be called 

} 


- (void)orientationChanged:(NSNotification *)notification 
{ 
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; 
//Based upon which orientation the device is in, update your View rotations. 
//A simple view.transform = CGAffineTransformMakeRotation(whatever); will work well. 
} 

Je crois que vous devriez supprimer le shouldAutoRotateToInterfaceO orientation: fonction tout à fait. Vous devez également appeler le [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; lorsque votre vue est déchargée.