2014-10-01 15 views
71

ho cercatoNascondi barra di stato in iOS 8 app

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

Questo non fa nulla.

E ho cercato nel file Info.plist di "Visualizza aspetto barra di stato basato su controller" ma non è lì.

Come posso nascondere la barra di stato bianca nella parte superiore dello schermo (con l'orologio e la carica della batteria) all'interno della mia app per Xcode 6? Grazie!

+4

È possibile aggiungere voci Info.plist, se necessario. Inoltre, ti suggerisco di cercare in SO e Google. Questo è stato chiesto e ha risposto molto. Avrai bisogno di sapere come cercare risposte a problemi più complessi presto, meglio iniziare ora. – djromero

+2

Critiche valide, grazie. – Aggressor

+2

Solo un suggerimento @djromero - se smettiamo di postare nuove versioni di vecchie domande le risposte diventano vecchie - non dovremmo incoraggiarle? Ciò significa anche che i nuovi arrivati ​​che rispondono a queste domande ottengono credito e l'intero sistema rimane in vita. – amergin

risposta

167

È necessario eseguire l'override di questo metodo su ciascun controller di visualizzazione a meno che non si disponga di tale voce plist.

Objective-C

-(BOOL)prefersStatusBarHidden{ 
    return YES; 
} 

Swift 2

override func prefersStatusBarHidden() -> Bool { 
    return true 
} 

Swift 3+

override var prefersStatusBarHidden: Bool { 
    return true 
} 

E non dimenticate di impostare (se si presenta un controller della vista chiamando il presentViewController: animato: il completamento: metodo):

Objective-C

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES; 

Swift

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true 

Documentazione: https://developer.apple.com/reference/uikit/uiviewcontroller/1621453-modalpresentationcapturesstatusb

Se si modifica la barra di stato da un controller di visualizzazione contenitore (es. UINavigationController o UIViewController con controller di visualizzazione figlio) e si desidera modificare il controller di visualizzazione responsabile della barra di stato, è necessario utilizzare la proprietà childViewControllerForStatusBarHidden:.Ad esempio:

Impostare prima vista istanza di controllo sempre responsabile per lo stato di gestione bar

Objective-C

- (UIViewController *)childViewControllerForStatusBarHidden { 
    return childViewControllers.first; // or viewControllers.first 
} 

Swift 2

override var childViewControllerForStatusBarHidden() -> UIViewController? { 
    return childViewControllers.first // or viewControllers.first 
} 

Swift 3+

override var childViewControllerForStatusBarHidden: UIViewController? { 
    return childViewControllers.first // or viewControllers.first 
} 

Set contenitore controller della vista responsabile della barra di stato la gestione

Objective-C

- (UIViewController *)childViewControllerForStatusBarHidden { 
    return nil; 
} 

Swift 2

override func childViewControllerForStatusBarHidden() -> UIViewController? { 
    return nil 
} 

Swift 3+

override var childViewControllerForStatusBarHidden: UIViewController? { 
    return nil 
} 

Documentazione: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh

+0

I miei ringraziamenti hanno funzionato perfettamente! – Aggressor

+0

c'è un modo per questo a livello mondiale forse un code rest in appdelegate? – CaffeineShots

+0

Sì, crea il tuo UIViewController e poi ereditalo. – VaporwareWolf

11

È possibile aggiungere la riga al file Info.plist se non è lì. Vai al progetto in Xcode, vai alla sezione "Informazioni" e passa con il mouse su una delle righe esistenti. Dovrebbe apparire un pulsante "+", che consente di aggiungere una linea e immettere "Visualizza aspetto barra di stato basata su controller".

+0

Grazie per il suggerimento, ho usato la risposta di cui sopra ma questo è bello sapere come funziona! Molto apprezzato – Aggressor

+0

Questa risposta è necessaria per iOS 9. – Beto

+0

grazie mille. questa è la soluzione alternativa per iOS 9 – Lixu

116
  1. Vai Info.plist file di
  2. Hover su una di quelle linee e di un (+) e (-) tasto apparirà.
  3. Fare clic sul pulsante più per aggiungere nuova chiave
  4. Digitare inizio con un capitale V e automaticamente la prima scelta sarà View Controller-based barra di stato l'aspetto. Aggiungilo come KEY.
  5. Impostare il VALORE su "NO"
  6. Vai a AppDelegate.m per Objective-C (per la lingua swift: AppDelegate.swift)
  7. aggiungere il codice, all'interno del metodo

Per Objective-C:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [application setStatusBarHidden:YES]; 

    return YES; 
} 

per SWIFT:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:Any]?) -> Bool { 
    application.statusBarHidden = true 

    return true 
} 

Fatto! Esegui la tua app e non più la barra di stato!

+2

Grazie, è la prima volta che ho trovato qualcuno che lo spiega bene e in realtà ha senso –

+2

@KarlHumphries, Prego. :) – nycdanie

+6

sono sufficienti solo i primi 5 passaggi se hai aggiunto un'altra chiave a info.plist, aggiungi questa chiave = "La barra di stato è inizialmente nascosta" con valore = "Sì" –

-4

Se si utilizza UIDocumentInteractionController di mostrare i dati, allora non avete mai nascondere la barra di stato così ho alternativa di questo

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

questa linea cambia il colore del contenuto barra di stato in bianco

25

È possibile nascondere lo stato barra senza scrivere una sola riga di codice, richiede solo due voci nel file info.plist il primo è

"Visualizza aspetto barra di stato basato su controller" impostato su NO

.210

il secondo è

"Barra di stato è inizialmente nascosto" impostato su SI

+0

L'aspetto della barra di stato basato su controller ha fatto il lavoro! – Makalele

+0

Grazie. Funziona bene. – Raja

+0

grazie funziona bene – Chandni

9

Per iOS 10 con Swift 3 si dovrebbe usare:

override var prefersStatusBarHidden: Bool { 
    get { 
     return true 
    } 
} 
+1

Infatti funziona con iOS 10. Preferisco la versione breve "override var prefersStatusBarHidden: Bool {return true}" –

2
  1. Aprire info.plist
  2. "Visualizza aspetto barra di stato basata su controller" impostato su NO
  3. "Barra di stato inizialmente nascosta" impostata su SÌ
  4. Fatto

Non c'è bisogno di scrivere una riga di codice ... Cin cin

+0

funziona perfettamente. – Moxarth

Problemi correlati