iphone - example - lifecycle viewcontroller ios
¿Hay alguna forma de atrapar un evento WillRotateToInterfaceOrientation desde un UIView? (3)
Puede suscribirse a una notificación global y recibir una llamada cuando se gira el dispositivo, aunque no hará nada por usted.
[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:@"UIDeviceOrientationDidChangeNotification" object:nil];
cada UIViewController tiene un método llamado willRotateToInterface.
¿Es posible hacer esto dentro de una UIView también?
¿Coincide esto con la idea del controlador de vista modelo?
La única forma en que puedo pensar es enviar el evento desde UIViewController a UIView.
¿Hay una variable global para la orientación actual?
Observe UIDeviceOrientationDidChangeNotification
:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
...
- (void)orientationDidChange:(NSNotification *)note
{
NSLog(@"new orientation = %d", [[UIDevice currentDevice] orientation]);
}
Referencia de clase de UIDevice
Debo anotar que me gustaría agregar -beginGeneratingDeviceOrientationNotifications
las notificaciones de -beginGeneratingDeviceOrientationNotifications
cuando desee que se envíen estas notificaciones, y llamar a -endGeneratingDeviceOrientationNotifications
cuando desee que se detengan. Esto genera un impacto en la batería, por lo que solo debe hacerlo cuando su vista esté en pantalla. UIViewController
hace todo esto por ti, por lo que si tienes un controlador de vista, vale la pena dejar que haga el trabajo.
Si solo desea ajustar la vista a un nuevo tamaño / diseño cuando la orientación cambie, debe simplemente anular su método layoutSubviews
.
Se llamará siempre que cambie el tamaño de la vista, lo que generalmente ocurre cuando se gira la vista.