2015-05-29 6 views
20

Come posso consentire alla mia app universale scritta in Swift su iOS 8.3 SDK di supportare solo la modalità verticale su iPhone, ma sia la modalità verticale che orizzontale su iPad?Swift - Consenti la rotazione solo su iPad

So che in passato questo è stato fatto in AppDelegate. Come potrei farlo in Swift?

risposta

53

si può fare a livello di codice, o meglio ancora, si può semplicemente modificare Info.plist del progetto (che dovrebbe essere più pratico, in quanto si tratta di una configurazione del dispositivo globale)

Just Add "orientamenti di interfaccia supportati (iPad) "chiave

enter image description here

+0

Questo è buono. A livello di programmazione non aiuta a bypassare l'app-store-gate-keeper. – mxcl

+0

Penso che potresti fare di meglio, chris – Harout360

6

Si potrebbe fare a livello di codice

override func shouldAutoRotate() -> Bool { 
    if UIDevice.currentDevice().userInterfaceIdiom == .Pad { 
     return true 
    } 
    else { 
     return false 
    } 
} 

e poi

override func supportedInterfaceOrientations() -> Int { 
    return UIInterfaceOrientation.Portrait.rawValue 
} 

o qualsiasi altro orientamento di rotazione che si desidera avere per impostazione predefinita.

Questo dovrebbe rilevare se il dispositivo che si sta utilizzando è un iPad e consentire la rotazione solo su quel dispositivo.

EDIT: Dal momento che si desideri solo ritratto su iPhone,

override func supportedInterfaceOrientations() -> Int { 
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone { 
     return UIInterfaceOrientation.Portrait.rawValue 
    } 
    else { 
     return Int(UIInterfaceOrientationMask.All.rawValue) 
    } 
} 
+0

anche più informazioni rotazioni può essere trovato qui http://stackoverflow.com/questions/25651969/setting-device-orientation-in-swift-ios – Kilenaitor

+0

Il supportedInterfaceOrientations' isn' ha ragione. Vuole 'Portrait' solo su iPhone, ma vuole * qualsiasi * orientamento su iPad. – nhgrif

+0

Questo è solo specifico per un controller di visualizzazione. Potresti voler sovrascrivere un metodo simile da UIApplicationDelegate come la risposta di @Caleb. Oppure modifica Info.plist. – chrisamanse

2

So che in passato questo è stato fatto in AppDelegate. Come potrei farlo in Swift?

La lingua utilizzata non modifica l'architettura dell'applicazione. A tale scopo, a Swift allo stesso modo lo si fa in Objective-C, vale a dire mediante l'attuazione di:

optional func application(_ application: UIApplication, 
     supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int 

nel vostro delegato applicazione.