2010-08-30 10 views
24

Eventuali duplicati:
iPhone orientationCome verificare l'orientamento del dispositivo a livello di codice in iPhone?

Come verificare l'orientamento del dispositivo in qualsiasi punto fuori tempo di programmazione in iPhone?

Grazie.

+1

Possibile duplicato [orientamento iPhone] (http://stackoverflow.com/q/634745/194544) – beryllium

+0

Prova questo: http://jayprakashdubey.blogspot.in/2014/07/check-device-orientation.html –

+0

È possibile utilizzare un metodo come willTransitionToTraitCollection: withTransitionCoordinator: questo metodo viene chiamato ogni volta che la raccolta di tratti del controller di visualizzazione cambia. I tratti possono essere le classi di dimensioni orizzontali e verticali. Quindi all'interno del metodo possiamo verificare quanto segue (in Swift): cambia newCollection.verticalSizeClass {case .Compact: // è landscape case. Regolare,.Non specificato: // ritratto di E} – plusangel

risposta

7

-[UIViewController interfaceOrientation]

Tuttavia è possibile recuperare il deviceOrientation, indipendente dalla corrente orientamento dell'interfaccia:

[[UIDevice currentDevice] orientation]

leggere la documentazione per ulteriori informazioni, però, è necessario fare alcune altre cose da fai quel lavoro

8

Prova anche:

UIInterfaceOrientationIsPortrait(orientation) 

e

UIInterfaceOrientationIsLandscape(orientation) 
69

Qui ci sono le macro UIDeviceOrientationIsLandscape e UIDeviceOrientationIsPortrait

in modo piuttosto controllare separatamente si può fare in questo modo ...

if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) 
    { 
     // code for landscape orientation  
    } 

O

if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)) 
    { 
     // code for Portrait orientation  
    } 
+0

questo metodo funziona bene, ma per me funziona solo all'interno del metodo di viewDidAppear. Sto usando stroyboad. È corretto ? –

+2

Questo non funziona di nuovo in iOS8 – Jacky

4

È possibile anche controllare all'interno della funzione

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 

    if(interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) 
    { 
     //do for portrait 
    }  
    else 
    { 
     //do for Landscape 
    } 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight || 
      interfaceOrientation == UIInterfaceOrientationPortrait || 
      interfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
      interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown); 
} 
14

Provalo.

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait) ) 
{ 
    // do something for Portrait mode 
} 
else if(([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight) || ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft)) 
{ 
    // do something for Landscape mode 
} 
3

È necessario posizionare [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; nella vostra AppDelegate didFinishLaunchingWithOptions

Poi, in qualsiasi punto dell'applicazione è possibile ottenere l'orientamento corrente con:

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

e l'orientamento di prova con:

UIInterfaceOrientationIsPortrait(orientation) UIInterfaceOrientationIsLandscape(orientation)

+0

Dovresti testare la variabile 'orientation' usando' UIDeviceOrientationIsLandscape' non usando 'UIInterfaceOrientationIsLandscape'. – Webdevotion

Problemi correlati