2015-05-07 26 views
5

Nelle impostazioni generali, consento le modalità portrait e landscapeleft, landscaperight. Voglio disattivare le modalità paesaggio. Su viewController scrivo questo codice:Come disabilitare e abilitare la rotazione automatica su swift?

override func shouldAutorotate() -> Bool { 

     return false 

} 

Tuttavia, l'auto rotazione funziona ignorando questa funzione. Come disabilitare e abilitare l'autorotazione su swift? Programmazione IOS

risposta

8

Potrebbe essere il codice corretto, ma non nel controller di visualizzazione destro. Ad esempio, se il controller di visualizzazione è incorporato in un UINavigationController, il controller di navigazione può ancora ruotare, causando la rotazione del controller di visualizzazione. Dipende davvero dalla tua situazione specifica.

+0

Ciao Josh, sì, ho inserito la navigazione vista del regolatore alla mia View Controller. Quindi dove dovrei inserire questo codice? –

+0

Sottoclasse uinavigationcontroller e inseriscilo. Fondamentalmente è solo necessario verificare se il controller della vista in alto è quello che si desidera ruotare o meno. –

+0

Non capisco quando si dice "controlla se il controller della vista in alto" ho messo la funzione di autorotate return false sulla sottoclasse uinavigationcontroller. L'autorotazione non funziona ora. quello che volevo. dopo ho messo il ritorno automatico se è vero che il mio lettore di video inizia a giocare. Quando vado a pieno schermo funziona l'autorizzazione. quando esco da schermo intero non funziona. Non capisco perché è così? –

3

Ho avuto lo stesso problema, l'ho risolto.

Follow-

info -> ios personalizzati bersaglio Proprietà -> supporto di interfaccia Orinetations. ed eliminare [Elimina - Paesaggio (tasto home sinistra), Paesaggio (a destra tasto home), Paesaggio (pulsante in alto casa)]! [1]

Questo vi aiuterà a

1

Puoi farlo con la creazione di una sottoclasse di UINavigationController e dentro che, ignorare la funzione dovrebbe AutoRotate, quindi

  • return false per le viewControllers in cui si desidera disabilitare autorotazione
  • ritorno vero per le viewControllers in cui si desidera autorotazione

    import UIKit  
    
    class CustomNavigationController: UINavigationController { 
    
    override func shouldAutorotate() -> Bool { 
        if !viewControllers.isEmpty { 
         // Check if this ViewController is the one you want to disable roration on 
         if topViewController!.isKindOfClass(ViewController) {    //ViewController is the name of the topmost viewcontroller 
    
          // If true return false to disable it 
          return false 
         } 
        } 
        // Else normal rotation enabled 
        return true 
        } 
    } 
    

Se si desidera disattivare autorotazione in tutto il controller di navigazione, rimuovere la se la condizione e restituire false sempre

Problemi correlati