quiero para detectar un proceso de rotación en el ipad mediante programación. En este caso quiero establecer un valor booleano en sí, cuando la rotación de comenzar, y establecer falso después de la rotación hizo acabar. ¿Hay algún método que se llama cuando la rotación comenzará la rotación ¿final?

InformationsquelleAutor R. Dewi | 2011-09-16

4 Comentarios

  1. 36

    De Apple Docs:

    Envía al controlador de vista justo antes de que la interfaz de usuario comienza a girar.

    - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

    Enviado a la vista del controlador después de la interfaz de usuario de la gira:

    - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

    Ver más aquí: UIViewController de Referencia de la Clase -> Respondiendo a la Vista de la Rotación de Eventos

    ATENCIÓN:
    Esta es obsoleta, véase el este post

    • Este es ahora obsoleta
    • willRotate me funciona en iOS 9 (Xamarin). Sin embargo, mira por favor @wyzkid207 post y uso viewWillTransitionToSize
  2. 28

    Para los recién llegados a este post, los métodos sugeridos por Nekto se han convertido en obsoleto en iOS 8. Apple sugiere la utilización de:

    -(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

    Puede utilizar el parámetro de «tamaño» como una manera fácil de conseguir si se está en la transición a un retrato o un paisaje.

    es decir,

    if (size.width > size.height)
    {
        //Position elements for Landscape
    }
    else
    {
        //Position elements for Portrait
    }

    Más info es availablein la Docs.

    • El tamaño es bastante inútil si la vista de su controlador tiene un ancho fijo y altura, ya sea en el diseño.
    • Esto es cierto. Yo solo estaba dando un rápido y sucio posible ejemplo.
    • uso UIInterfaceOrientation destinationOrientation = [[UIApplication sharedApplication] statusBarOrientation];
  3. 19

    Todos los métodos anteriores(en la respuesta de @Nekto) están en desuso en iOS8.0 y versiones posteriores. Fuente: iOS Developer Library

    Como de iOS 8, todos de la rotación de los métodos relacionados están en desuso. En su lugar,
    las rotaciones son tratados como un cambio en el tamaño de la vista del controlador
    la vista y son, por tanto, informaron el uso de la
    viewWillTransitionToSize:withTransitionCoordinator: método. Cuando el
    la interfaz de cambios de orientación, UIKit llama a este método en la ventana
    raíz de controlador de vista. Ese punto de vista controlador, a continuación, notifica a su hijo
    vista de los controladores, propagando el mensaje en la vista de
    controlador de jerarquía.

    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
    • esta respuesta es la mejor
  4. 0

    En el UISplitViewController protocolo, 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 NUNCA de retorno Automático.

Dejar respuesta

Please enter your comment!
Please enter your name here