sacar rapido plus llama inferior editar customize control como centro barra aparece acceso iphone ios6 screen-orientation device-orientation ipad-3

iphone - rapido - editar centro de control ios 11



¿Cómo obtener la orientación actual del dispositivo programáticamente en iOS 6? (8)

He desarrollado una aplicación iOS y la he probado en un dispositivo iOS6. Durante las pruebas, me di cuenta de que mi aplicación no responde a los cambios de orientación como se esperaba.

Aquí está mi código:

// Autorotation (iOS >= 6.0) - (BOOL) shouldAutorotate { return NO; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationMaskPortrait; }

Precisamente, quiero saber qué métodos se llaman en los cambios de orientación en iOS.


En su ViewController, puede usar el método didRotateFromInterfaceOrientation: para detectar cuándo se ha girado el dispositivo y luego hacer lo que necesite en cada orientación.

Ejemplo:

#pragma mark - Rotation -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; switch (orientation) { case 1: case 2: NSLog(@"portrait"); // your code for portrait... break; case 3: case 4: NSLog(@"landscape"); // your code for landscape... break; default: NSLog(@"other"); // your code for face down or face up... break; } }




Siga la documentación en UIDevice .

Necesitas llamar

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

Luego, cada vez que se cambie la orientación, recibirá una UIDeviceOrientationDidChangeNotification.


Tal vez estúpido pero está funcionando (solo en ViewController):

if (self.view.frame.size.width > self.view.frame.size.height) { NSLog(@"Hello Landscape"); }


Este tutorial ofrece una descripción general agradable y sencilla de cómo manejar la rotación de dispositivos usando UIDeviceOrientationDidChangeNotification . Debería ayudarlo a comprender cómo usar UIDeviceOrientationDidChangeNotification para recibir una notificación cuando la orientación del dispositivo haya cambiado.


@property (nonatomic) UIDeviceOrientation m_CurrentOrientation ;

/ * Debe declarar estos códigos en su ViewDidload o ViewWillAppear * /

- (void)viewDidLoad { [super viewDidLoad]; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(deviceOrientationDidChange:) name: UIDeviceOrientationDidChangeNotification object: nil]; }

/ * Ahora nuestro dispositivo enviará una notificación cada vez que cambiemos la orientación de nuestro dispositivo, para que pueda controlar su código o programa utilizando la orientación actual * /

- (void)deviceOrientationDidChange:(NSNotification *)notification { //Obtaining the current device orientation /* Where self.m_CurrentOrientation is member variable in my class of type UIDeviceOrientation */ self.m_CurrentOrientation = [[UIDevice currentDevice] orientation]; // Do your Code using the current Orienation }


UIDevice.current.orientation.isLandscape

La respuesta aceptada lee la orientación del dispositivo como se indicó anteriormente, que puede informarse de manera diferente a la orientación de su (s) controlador (es) de vista, especialmente si su dispositivo se mantiene en una posición casi horizontal.

Para obtener la orientación de su controlador de vista específicamente, puede usar su propiedad interfaceOrientation , que está en desuso desde iOS 8.0 pero aún así informa correctamente.