Gustaría que todo en la pantalla de interfaz de usuario (UI) para ser capaz de girar desde el paisaje de izquierda a derecha o vica versa.

¿Cómo puedo hacer esto? Es esto en privado?

Sé que

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {}

permite decir que las orientaciones de la interfaz de usuario puede ser, pero hay una manera de forzar a uno a la vez?

Saludos

InformationsquelleAutor Sam Jarman | 2010-12-02

10 Comentarios

  1. 16

    Que se llama al método para determinar si su interfaz debe rotar automáticamente a una determinada rotación (he.e dejar UIKit hacer el trabajo duro, en lugar de hacerlo manualmente).

    Así que si quería que su aplicación sólo funciona en el paisaje se implemente el cuerpo de ese método:


    return UIInterfaceOrientationIsLandscape(interfaceOrientation);

    Si usted quisiera que su interfaz de usuario gire automáticamente a todas las orientaciones que sólo podría

    return YES;

    Es que lo que pedían?

    • no, más bien de la configuración de la interfaz de usuario de orientación para diferentes orientaciones de código en diferentes momentos en el programa. (así, por un poco de contexto, puede espejo de otro dispositivo)
    • Ah OK, bueno, en ese caso, probablemente voy a volver SÍ las orientaciones que el VC apoya en que el método de delegado y, a continuación, tratar de forzar la orientación de uso: [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight]; no sé si alguna vez he probado personalmente obligando de esa manera, pero podría funcionar…
    • No estoy seguro si este es tu problema, pero cambio su shouldAutorotateToInterfaceOrientation método: regresar UIInterfaceOrientationIsLandscape(interfaceOrientation);
    • Y entonces tal vez hacer lo que Justin la Cañada-Summers dice y modalmente presente el controlador de vista. De esa manera usted podría no tener que forzar la orientación mediante setOrientation. Haciendo locuras orientaciones pueden ser una perra…
    • así que hice lo que me dijiste y funciona muy bien. Mi archivo nib es en el modo de paisaje. y el específico punto de vista es siempre en el paisaje. sin embargo, si puedo rotar el hardware en el paisaje (de la otra manera), el controlador de vista no gira … alguna ayuda ?
    • en otras palabras, funciona para LandscapeLeft y NO para LandscapeRight !!!
    • Ustedes están hablando acerca de una determinada mina… pero, ¿qué acerca de la orientación del dispositivo? Hace de la orientación del dispositivo a la altura de lo que la punta de la orientación? Tengo un juego donde el glView es la representación como la que aparece en el paisaje, pero el dispositivo (o algo más?) es la preservación de una orientación vertical. Estoy teniendo problemas para colocar su respuesta en ese ámbito…

  2. 24

    En iOS [[UIDevice currentDevice] setDeviceOrientation:UIDeviceOrientationSomeOrientation] método está ausente. Pero podemos rotar una vista con la barra de estado, para esto:

    - (void)showAlbum {
        //check current orientation
        if ([[UIApplication sharedApplication] statusBarOrientation] != UIInterfaceOrientationLandscapeLeft) {
            //no, the orientation is wrong, we must rotate the UI
            self.navigationController.view.userInteractionEnabled = NO;
            [UIView beginAnimations:@"newAlbum" context:NULL];
            [UIView setAnimationDelegate:self];
            //when rotation is done, we can add new views, because UI orientation is OK
            [UIView setAnimationDidStopSelector:@selector(addAlbum)];
            //setup status bar
            [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft  animated:NO];
            //rotate main view, in this sample the view of navigation controller is the root view in main window
            [self.navigationController.view setTransform: CGAffineTransformMakeRotation(M_PI / 2)];
            //set size of view
            [self.navigationController.view setFrame:CGRectMake(0, 0, 748, 1024)];
            [UIView commitAnimations];
        } else {
            [self addAlbum];
        }
    
    }
    • Gracias! Todo lo que necesitaba era el UIView.transformación de la propiedad desde el punto de vista estoy trabajando en sólo necesita estar en orientación horizontal.
    • ¿Qué acerca de CoreMotion orientación? ¿Cambia con el estado de la orientación de la barra?
    • No,not. CoreMotion sends device-motion events this code cannt cambio de la orientación del dispositivo ha cambiado sólo la aplicación de la orientación de la pantalla.
    • No sé cómo se puede utilizar una UIDeviceOrientation para setStatusBarOrientation. De acuerdo a la referencia, usted necesita usar un UIInterfaceOrientation. Pero tal vez usted puede explicar su razonamiento?
    • Tienes toda la razón.
  3. 18

    He tenido éxito con este:

     if (self.interfaceOrientation != UIInterfaceOrientationPortrait) {
        //http://stackoverflow.com/questions/181780/is-there-a-documented-way-to-set-the-iphone-orientation
        //http://openradar.appspot.com/radar?id=697
        //[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; //Using the following code to get around apple's static analysis...
        [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)UIInterfaceOrientationPortrait];
    }
    • En primer lugar gracias Chis!! Pero, ¿por qué Apple hacen de este método (setOrientation:) no disponible para nosotros? Es tan fácil y simple. Pero es que Apple probar también? Thx
    • Mediante este método cualquier posibilidad de rechazo en el proceso de aprobación de apple?
    • El anterior código no compila bajo el ARCO. No aprecian el elenco de NSInteger de identificación. Usted puede, sin embargo, el uso NSInvocation lugar. Dicho esto, no funcionó para mí en iOS 6.
    • Usted puede vencer el ARCO problema con el uso de: [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(__bridge id)((void*)UIInterfaceOrientationPortrait)]; pero no funcionaría en iOS6 de todos modos.
  4. 5

    Si usted presenta una modal vista controlador que implementa -shouldAutorotateToInterfaceOrientation: a sólo admiten una orientación, toda la interfaz será automáticamente obligado a hacerlo. No creo que hay una forma de cambiar mediante programación la orientación de otra manera.

  5. 3

    También esta sencilla manera en que funciona:

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];

    y espalda:

    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
    • Esto me ayudó a arreglar IPAD paisaje de lanzamiento de la edición: no toque evento recibió a todos. Llamar setStatusBarHidden por arte de magia se soluciona el problema.
  6. 2

    Este fue abordado por: Guntis Treulands https://stackoverflow.com/a/10146270/894671

    //-----------------------------------
    //FORCE PORTRAIT CODE
    //-----------------------------------
    [[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationPortrait animated:NO];
    //present/dismiss viewcontroller in order to activate rotating.
    UIViewController *mVC = [[UIViewController alloc] init];
    [self presentModalViewController:mVC animated:NO];
    [self dismissModalViewControllerAnimated:NO];
  7. 0
    if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
            objc_msgSend([UIDevice currentDevice], @selector(setOrientation:),    UIInterfaceOrientationLandscapeLeft );
        }
  8. 0

    Aunque esto no es un ocioso solución, funciona bien para mí.

    - (void)viewDidLoad
    {
       self.view.transform = CGAffineTransformIdentity;
       self.view.transform = CGAffineTransformMakeRotation((M_PI * (90) / 180.0)); 
       self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
    }
  9. 0

    Como sugirió en un hilo shouldAutorotateToInterfaceOrientation está en desuso. Nuevas aplicaciones deben aprovechar los siguientes métodos descritos en Apple UIViewController De Referencia De La Clase hasta que ellos mismos se convierten en desuso:

    • shouldAutorotate,
    • preferredInterfaceOrientationForPresentation; y
    • attemptRotationToDeviceOrientation.

    De lo que yo entiendo, es mejor usar diferentes de visualización de Controladores para las vistas que necesita para bloquear a (es decir, tienen una preferido) orientación de modo que difiere de la última.

Dejar respuesta

Please enter your comment!
Please enter your name here