2009-09-01 12 views

Répondre

17

Observer UIDeviceOrientationDidChangeNotification:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil]; 

... 

- (void)orientationDidChange:(NSNotification *)note 
{ 
    NSLog(@"new orientation = %d", [[UIDevice currentDevice] orientation]); 
} 

UIDevice Class Reference

Je dois souligner que yo Uneed pour ajouter -beginGeneratingDeviceOrientationNotifications lorsque vous voulez que ces notifications soient envoyées, et appelez -endGeneratingDeviceOrientationNotifications quand vous voulez qu'ils arrêtent. La génération de ces effets a un impact sur la batterie, vous ne devriez donc le faire que lorsque votre vue est à l'écran. UIViewController fait tout cela pour vous, donc si vous avez un contrôleur de vue, il vaut la peine de le laisser faire le travail.

2

Vous pouvez vous abonner à une notification globale et obtenir un appel lorsque le dispositif est mis en rotation, il ne fera pas quelque chose pour vous si ..

[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(didRotate:) 
name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 
3

Si vous voulez juste ajuster en vue de la nouvelle taille/mise en page lorsque changements d'orientation, vous devez simplement remplacer sa méthode layoutSubviews.

Il sera appelé chaque fois que la taille de la vue change, ce qui arrive généralement lorsque la vue est tournée.

+0

Ce serait une solution parfaite si les modifications apportées dans un appel layoutSubviews étaient animables. –