2011-11-01 2 views

risposta

111

self.interfaceOrientation restituisce UIInterfaceOrientation, l'orientamento corrente dell'interfaccia. È una proprietà in UIViewController, è possibile accedere a questa solo nelle classi di UIViewController.

[[UIApplication sharedApplication] statusBarOrientation] restituisce UIInterfaceOrientation, l'orientamento corrente della barra di stato dell'applicazione. Puoi accedere a quella proprietà in qualsiasi punto della tua applicazione. La mia esperienza mostra che è il modo più efficace per recuperare l'orientamento dell'interfaccia reale.

[[UIDevice currentDevice] orientation] restituisce UIDeviceOrientation, orientamento del dispositivo. Puoi accedere a quella proprietà in qualsiasi punto della tua applicazione. Notare che UIDeviceOrientation non è sempre UIInterfaceOrientation. Ad esempio, quando il tuo dispositivo si trova su un tavolo normale puoi ricevere un valore inaspettato.

+0

Grazie, mi è chiaro ora! –

+1

un'altra risposta per quanto riguarda l'orientamento dell'interfaccia - http://stackoverflow.com/a/3897243/194544 – beryllium

+0

+1, spiegazione molto buona :)) – mAc

23

[[UIApplication sharedApplication] statusBarOrientation] - è sempre uguale a uno dei quattro valori: verticale, orizzontale a sinistra, orizzontale a destra e verticale a testa in giù.

[[UIDevice currentDevice] orientation] - questo è uguale a quattro valori standard e anche: sconosciuto, rivolto verso l'alto o verso il basso.

[[UIApplication sharedApplication] statusBarOrientation] - è il modo più preferito per ottenere l'orientamento dell'interfaccia.

+0

Inoltre, '[[UIDevice currentDevice] orientamento] '" ... restituisce sempre 0 a meno che le notifiche di orientamento non siano state abilitate chiamando beginGeneratingDeviceOrientationNotifications. " (Doc.) – Olie

+8

12 emicranie e 5 ulcere dopo, posso confermare che '[[UIApplication sharedApplication] statusBarOrientation]' è un modo più affidabile e semplice per rilevare e gestire i cambiamenti di orientamento. –

1

Tutti i controller di vista hanno questa funzione

override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) { 
      //fromInterfaceOrientation.isLandscape 
    } 

oppure è possibile all'utente la barra di stato orientamento

if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.Portrait { 
     // 
    } 

Opere in iOS 9 :)