quiero detectar un proceso de rotación en el iPad programáticamente. En este caso, quiero establecer un booleano en sí, cuando comenzará la rotación, y establecerlo como falso después de que la rotación haya terminado. ¿Hay algún método que llame cuando la rotación comenzará y la rotación terminó?qué método se llamará cuando comencemos a girar el dispositivo y después de que haya finalizado
Respuesta
Docs de Apple:
Se envía al controlador de vista justo antes de la interfaz de usuario empieza a girar.
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
envía al controlador de vista después de la interfaz de usuario hace girar:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
Ver más aquí: UIViewController Class Reference -> Responding to View Rotation Events
ATENCIÓN: Esto está en desuso, ver this post
Para los recién llegados a este post, los métodos sugeridos por necto han llegado a ser obsoleto en el IOS de Apple 8. sugiere utilizar:
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
Puede utilizar el parámetro "tamaño" como una manera fácil de conseguir si se está en transición hacia retrato o paisaje
decir
if (size.width > size.height)
{
// Position elements for Landscape
}
else
{
// Position elements for Portrait
}
Más información availablein es la Docs.
El tamaño es bastante inútil si la vista de su controlador tiene un ancho/alto fijo en cualquiera de los diseños. – Mecki
Esto es cierto. Solo estaba dando un rápido y sucio ejemplo posible. – wyzkid207
usa UIInterfaceOrientation destinationOrientation = [[UIApplication sharedApplication] statusBarOrientation]; – Rajneesh071
En el protocolo UISplitViewController, el nuevo método para iOS8 es
- (void)splitViewController:(UISplitViewController *)svc willChangeToDisplayMode:(UISplitViewControllerDisplayMode)displayMode
Hay cuatro modos de visualización:
typedef enum UISplitViewControllerDisplayMode : NSInteger {
UISplitViewControllerDisplayModeAutomatic,
UISplitViewControllerDisplayModePrimaryHidden,
UISplitViewControllerDisplayModeAllVisible,
UISplitViewControllerDisplayModePrimaryOverlay,
} UISplitViewControllerDisplayMode;
PERO este método se NUNCA de retorno automático.
Todos los métodos anteriores (en la respuesta de @Nekto) están en desuso en iOS8.0 y versiones posteriores. Fuente: iOS Developer Library
A partir del iOS 8, todos los métodos relacionados con la rotación son desaprobados. En cambio, las rotaciones se tratan como un cambio en el tamaño de la vista del controlador de vista y, por lo tanto, se informan mediante el método viewWillTransitionToSize: withTransitionCoordinator :. Cuando cambia la orientación de la interfaz , UIKit llama a este método en el controlador de vista raíz de la ventana. A continuación, el controlador de vista notifica a sus controladores de vista secundarios , propagando el mensaje a lo largo de la jerarquía de controles .
En iOS8 o posterior, puede utilizar el siguiente método.
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
// Stuff you used to do in willRotateToInterfaceOrientation would go here.
// If you don't need anything special, you can set this block to nil.
} completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {
// Stuff you used to do in didRotateFromInterfaceOrientation would go here.
// If not needed, set to nil.
}];
}
esta es una gran respuesta :) –
voy a guardar este – user1244109
esta respuesta es la mejor –
- 1. ejecutar el código DESPUÉS de que Recaptcha.reload() haya finalizado
- 2. ¿Cómo puedo permitir que mi CountDownTimer se restablezca después de que la cuenta regresiva haya finalizado?
- 3. Hay una manera en .NET de llamar automáticamente a un método después de que se haya invocado otro método, pero antes de que se haya ingresado
- 4. Agregar servicios después de que se haya construido el contenedor
- 5. VBScript - ¿Cómo hacer que el programa espere hasta que el proceso haya finalizado?
- 6. En Java, ¿se garantiza que se llamará el bloque "finalmente" (en el método principal)?
- 7. Hacer girar la subvista también cuando se gira el dispositivo iPhone/iPad
- 8. ¿Qué método delegado llamará cuando se cierre una aplicación en IOS?
- 9. ¿cuál es el uso del método listo en Ember.Application? ¿Se llamará después de que se hayan inicializado todas las vistas?
- 10. ¿Es posible pasar argumentos a un fragmento después de que se haya agregado a una actividad?
- 11. ¿Cómo evito que FormView elimine los valores ingresados del usuario después de que se haya activado el método de inserción?
- 12. Tomcat 6: ¿cómo eliminar archivos temporales después de que ha finalizado una llamada al método web?
- 13. ¿Por qué no se llamará el interceptor de DynamicProxy para * cada * llamada al método virtual?
- 14. Con qué frecuencia se llamará DownloadProgressChangedEventHandler
- 15. ¿Se está ejecutando el código después de que Rails se haya cargado?
- 16. ¿qué constructor se llamará para ver?
- 17. ¿Qué tan pronto se llamará a jQuery (documento)?
- 18. ¿Qué sucede si un usuario sale del navegador o cambia de página antes de que la solicitud AJAX haya finalizado?
- 19. El texto de TextView desaparece al girar el dispositivo
- 20. Ejecutando Javascript después de que el valor seleccionado del control se haya establecido
- 21. ¿Qué le sucede a una dirección después de que se le haya aplicado el operador delete en C++?
- 22. cuando se carga spring bean y si tengo un constructor y setters, ¿cuál se llamará primero?
- 23. ¿Es posible cambiar los estilos de Google Map después de que se haya inicializado el mapa?
- 24. ¿Qué hacer cuando se usa Contract.Assert (true) y el método debe devolver algo?
- 25. CSS surte efecto después de que la página haya procesado
- 26. Cómo obtener la URL original después de que se haya llamado a HttpContext.RewritePath()
- 27. Eclipse y Maven: ejecutar objetivo después de que se haya cambiado un archivo
- 28. ¿Cómo cambio el tamaño de un Google Map con JavaScript después de que se haya cargado?
- 29. ocultando TabBar al girar el dispositivo iPhone al paisaje
- 30. Evento de incendio después de que MarkerClusterer haya terminado
Este es considerado obsoleto –
willRotate funciona para mí en IOS 9 (Xamarin). Sin embargo, mire la publicación de @wyzkid207 y use viewWillTransitionToSize – jfmg