Estoy haciendo una aplicación para el iPhone y la necesito para estar en el modo de retrato, de modo que si el usuario mueve el dispositivo de lado, no rotar automáticamente. ¿Cómo puedo hacer esto?

InformationsquelleAutor user1483652 | 2012-08-02

8 Comentarios

  1. 51

    Para deshabilitar orientaciones para un determinado Controlador de Vista de, ahora debe reemplazar supportedInterfaceOrientations y preferredInterfaceOrientationForpresentation.

    - (NSUInteger) supportedInterfaceOrientations {
        //Return a bitmask of supported orientations. If you need more,
        //use bitwise or (see the commented return).
        return UIInterfaceOrientationMaskPortrait;
        //return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
    }
    
    - (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
        //Return the orientation you'd prefer - this is what it launches to. The
        //user can still rotate. You don't have to implement this method, in which
        //case it launches in the current orientation
        return UIInterfaceOrientationPortrait;
    }

    Si usted está apuntando a algo mayores que los de iOS 6, desea que el shouldAutorotateToInterfaceOrientation: método. Cambiando cuando vuelve en sí, podrá determinar si va a girar a dicha orientación. Esto sólo va a permitir que el normal de la orientación vertical.

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        //Return YES for supported orientations
        return (interfaceOrientation == UIInterfaceOrientationPortrait); 
    
        //Use this to allow upside down as well
        //return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
    }

    Nota que shouldAutorotateToInterfaceOrientation: ha sido desaprobado en iOS 6.0.

    • Si la vista controlador es un controlador de navegación, la navegación del controlador es donde estas necesitan ser implementados.
    • Así lo hice, pero no funciona. Consulte pastebin.com/dLfLLP2j Cada controlador implementa supportedInterfaceOrientations correctamente. El primer punto de vista controlador muestra correctamente en vertical incluso cuando la aplicación se inicia desde el dispositivo en pantalla de inicio en el iPhone Plus. Pero cuando me vaya a otro controlador, gire el dispositivo hacia atrás y adelante para ajustar el otro controlador de paisaje, y de regreso, el primer controlador está ahora en el paisaje. Lo que yo quiero es el primer controlador en el retrato y la segunda para ser .todos.
    • Sugiero relacing NSUinteger de supportedInterfaceOrientations (primera línea de código) para UIInterfaceOrientationMask. Xcode 8 advierte acerca de «Conflicto de tipo de retorno en aplicación de la ‘supportedInterfaceOrientations’: ‘UIInterfaceOrientationMask’ (aka ‘enum UIInterfaceOrientationMask’) vs ‘NSUInteger’ (aka ‘unsigned long’)» y hace sens. Gracias por tu respuesta 🍻
  2. 38

    De Xcode 5 y por encima

    • Haga clic en el proyecto en el Navegador de Proyectos en la barra lateral de la izquierda para abrir la configuración del proyecto
    • Ir a la General ficha.
    • Desactive las opciones de las que usted no quiere en la Implementación Info sección, bajo de la Orientación del Dispositivo

    ¿Cómo puedo desactivar la orientación horizontal?

    • Yo no puedo anular la selección de Paisaje en la mía. Se convierte de nuevo inmediatamente. También, si se me borre de la Información.plist, se pone de nuevo.
  3. 28

    Xcode 4 y a continuación

    Para aquellos que se la perdieron: puede utilizar la configuración del proyecto de la pantalla para fijar orientaciones en toda la aplicación (no es necesario reemplazar métodos en cada controlador):

    ¿Cómo puedo desactivar la orientación horizontal?

    Es tan simple como cambiar la interfaz compatible con las orientaciones. Usted puede encontrar haciendo clic sobre su Proyecto en el panel de la izquierda > la aplicación de destino > ficha Resumen.

    • Esta es obsoleto; la interfaz de usuario es diferente ahora.
  4. 1

    Swift 3
    Si usted tiene un navigationController, subclase de esta (para el retrato solamente):

    class CustomNavigationViewController: UINavigationController {
    
      override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return UIInterfaceOrientationMask.portrait
      }
    
      override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        return UIInterfaceOrientation.portrait
      }
    }
  5. 1

    Si quieres deshabilitar la orientación horizontal para tanto para el iPhone y el iPad.

    Ir a Objetivos y Vaya a la ficha General. Ver la pantalla de abajo y anule la selección de paisaje a la izquierda y el paisaje derecho.

    ¿Cómo puedo desactivar la orientación horizontal?

    Aquí, en este caso, sólo el iPhone en modo horizontal se deshabilitará no para el iPad. Para iPad todos los modos son anabled. Si desea seleccionar la opción de dispositivo de Universal para iPad. Se parece a esto. Vea a continuación la pantalla.

    ¿Cómo puedo desactivar la orientación horizontal?

    Ahora lo que necesita para anular la selección de todos modos excepto Retrato para el iPad. Ver la siguiente captura de pantalla.

    ¿Cómo puedo desactivar la orientación horizontal?

    Ahora correctamente movilidad de todos modos excepto Retrato para todos los dispositivos.

  6. 0

    Extracción el método de shouldAutorotateToInterfaceOrientation de su clase completamente también funciona. Si usted no planea sobre la rotación de entonces no tiene sentido tener el método en su clase, al menos el código de la mejor, y mantiene las cosas en limpio.

    • Esta respuesta es obsoleta; shouldAutorotateToInterfaceOrientation ha estado en desuso durante años.
    • href=»https://developer.apple.com/reference/uikit/uiviewcontroller/1621419-shouldautorotate» >developer.apple.com/reference/uikit/uiviewcontroller/… no tiene una desatención aviso.
    • Es también un método diferente a la mencionada en esta respuesta; estoy seguro de lo que su punto.
    • Oh, lo siento. Lo echaba de menos.
  7. 0

    Solución más simple separado para iPhone y iPad (Universal) – sus quitar innecesarios en la orientación de la info.plist archivo o Proyecto -> Info -> la Costumbre de iOS Propiedades de Destino.

    Acaba de agregar o quitar orientación elemento de la lista:

    • Interfaz compatible con la orientación para iPhone
    • Interfaz compatible con orientaciones (iPad) para iPar

    ¿Cómo puedo desactivar la orientación horizontal?

Dejar respuesta

Please enter your comment!
Please enter your name here