ios - speciali - xamarin top bar color




Come cambiare il colore del testo della barra di stato in iOS (20)

La mia applicazione ha uno sfondo scuro, ma in iOS 7 la barra di stato è diventata trasparente. Quindi non riesco a vedere nulla, solo l'indicatore verde della batteria nell'angolo. Come posso cambiare il colore del testo della barra di stato in bianco come se fosse nella schermata principale?


  1. Vai a Project -> Target ,

  2. Quindi imposta lo Status Bar Style su Light . Rende la barra di stato bianca dalla schermata di avvio.

  3. Quindi impostare View controller-based status bar appearance uguale a NO in Info.plist .


  1. Imposta UIViewControllerBasedStatusBarAppearance su YES nel file .plist.

  2. Nel viewDidLoad fai un [self setNeedsStatusBarAppearanceUpdate];

  3. Aggiungi il seguente metodo:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }
    

Nota : questo non funziona per i controller all'interno di UINavigationController , vedere il commento di Tyson di seguito :)

Swift 3 - UINavigationController controller all'interno di UINavigationController . Aggiungi questo codice all'interno del tuo controller.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Funziona con Golden Master iOS 7 e Xcode 5 GM seed e iOS7 SDK rilasciati il ​​18 settembre 2013 (almeno con il controller di navigazione nascosto):

  1. Imposta the UIViewControllerBasedStatusBarAppearance su NO nel file Info.plist .

  2. Nel metodo ViewDidLoad o ovunque, in cui si desidera modificare lo stile della barra di stato: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


Ho fatto alcune cose diverse e funziona per me.

Senza modifiche nel codice, ho configurato il mio file .plist in questo modo:

  • Visualizza aspetto barra di stato basata su controller> NO
  • Stile barra di stato> UIStatusBarStyleLightContent (stringa semplice)

Spero possa essere d'aiuto.

modificare

Per ogni controller della vista cambio la proprietà "Simulated Metrics" della "barra di stato", nello storyboard, da "inferred" a "Light Content"


In alternativa, è possibile disattivare l'aspetto della barra di stato basata sul controller di visualizzazione:

  1. Imposta l' View controller-based status bar appearance NO nel tuo Info.plist .
  2. Chiama [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Nota: questo metodo è stato deprecato in iOS9. Utilizzare preferredStatusBarStyle su UIViewController. (vedi Apple Developer Library )


La chiave per fare questo lavoro è che solo il controller della vista a schermo intero deve dettare lo stile della barra di stato.

Se si sta utilizzando un controller di navigazione e si desidera controllare la barra di stato su una base per controller di visualizzazione, è consigliabile sottoclasse UINavigationController e implementare preferredStatusBarStyle in modo tale che restituisca la preferenza topViewController.

Assicurati di cambiare il riferimento alla classe nella scena storyboard da UNAVigationController alla sottoclasse (ad esempio MyNavigationController nell'esempio seguente).

(Quanto segue funziona per me. Se la tua app è basata su TabBar, ti consigliamo di fare qualcosa di simile sottoclassi l'UITabBarController ma non l'ho provato).

@interface MyNavigationController : UINavigationController

@end

@implementation MyNavigationController

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return self.topViewController.preferredStatusBarStyle;
}

@end


Niente di tutto ciò ha funzionato per me, quindi ecco una soluzione funzionante ...

In Info.plist , aggiungi una riga:

UIViewControllerBasedStatusBarAppearance e imposta il valore NO .

Quindi, in AppDelegate in didFinishLaunchingWithOptions , aggiungi queste righe:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];

Penso che tutte le risposte non indichino il problema perché tutte funzionano in scenari specifici. Ma se hai bisogno di coprire tutti i casi segui i punti seguenti:

A seconda di dove hai bisogno dello stile light della barra di stato, dovresti sempre tenere a mente questi 3 punti:

1) Se hai bisogno della barra di stato nella schermata di avvio o in altri luoghi, dove non puoi controllarlo (non in controller di visualizzazione, ma piuttosto in elementi / momenti controllati dal sistema come la schermata di avvio) Vai alle impostazioni del tuo progetto

2) se si dispone di un controller in un controller di navigazione È possibile modificarlo nel builder dell'interfaccia come segue:

a) Seleziona la barra di navigazione del tuo controller di navigazione

b) Quindi imposta lo stile della barra di navigazione su "Nero", perché questo significa che avrai uno sfondo "nero" -> scuro sotto la barra di stato, quindi imposterà la barra di stato su bianco

O fallo nel codice come segue

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Se si ha il controller da solo che deve avere il proprio stile della barra di stato e non è incorporato in una struttura del contenitore come UINavigationController

Imposta lo stile della barra di stato nel codice per il controller:


Per me, non è successo nulla usando tutte le cose nelle altre risposte (e da altre fonti / documentazione). Ciò che ha aiutato è stato impostare lo stile della barra di navigazione su "Nero" nell'XIB. Questo ha cambiato il testo in bianco senza alcun codice.


Questo è documentato nella Guida alla transizione dell'interfaccia utente di iOS 7 , per la quale è necessario un ID sviluppatore Apple per accedere direttamente. L'estratto pertinente:

Poiché la barra di stato è trasparente, la vista dietro di essa viene visualizzata. [...] Utilizzare una costante UIStatusBarStyle per specificare se il contenuto della barra di stato deve essere scuro o chiaro:

UIStatusBarStyleDefault visualizza il contenuto scuro. [...]

UIStatusBarStyleLightContent visualizza il contenuto leggero. Utilizzare quando il contenuto scuro è dietro la barra di stato.

Anche possibilmente di interesse:

In iOS 7, puoi controllare lo stile della barra di stato da un singolo controller di vew e cambiarlo durante l'esecuzione dell'app. Per attivare questo comportamento, aggiungere la chiave UIViewControllerBasedStatusBarAppearance al file Info.plist di Info.plist e assegnargli il valore YES .

Consiglio vivamente di dare un'occhiata al documento, che, di nuovo, puoi accedere con il tuo ID sviluppatore Apple.


Risposta aggiornata per Xcode GM Seed:

  1. In Info.plist put View controller-based status bar appearance come NO

  2. Nel progetto, impostare:

  3. In ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


Se si desidera ancora utilizzare l' View controller-based status bar appearance in Info.plist impostato su SÌ, il che significa che è possibile modificare la barra di stato per ciascun controller di visualizzazione, utilizzare quanto segue per il testo bianco nella barra di stato in ViewDidLoad:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];

Se vuoi lo stesso risultato con Swift, puoi usare questo codice nel tuo file AppDelegate.swift:

UINavigationBar.appearance().barStyle = .BlackTranslucent

E il testo della barra di stato sarà bianco :-)!


Solo due passaggi come segue:

Passo 1:

Sotto la scheda Informazioni della project target del project target , Aggiungi riga:

UIViewControllerBasedStatusBarAppearance , imposta il valore NO .

Passo 2:

Nel progetto AppDelegate.m :

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}

Sto usando Xcode 6 beta 5 su un progetto Swift , per un'applicazione iOS 7.

Ecco cosa ho fatto e funziona:

info.plist:


in info.plist imposta il valore del campo NO Visualizza l'aspetto della barra di stato basato sul controller e imposta la luce dello stile della barra di stato in target> impostazione generale.


In Swift 3 è molto facile solo con 2 passaggi. Vai al tuo info.plist e cambia il tasto View controller-based status bar appearance "NO". Quindi in Appdelegate aggiungi questa riga nel metodo didfinishlaunchingwithoptions

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }

Non è necessario fare alcun codice per questo

È necessario aggiungere la chiave "Aspetto barra di stato basata su controller" in info.plist come segue:

& imposta il suo tipo di valore su Booleano e valore su NO. Quindi fare clic su Impostazioni progetto, quindi fare clic su Scheda Generale e in Info distribuzione impostare lo stile della barra di stato preferito su. Luce come segue:

Questo è tutto.


Puoi farlo senza scrivere alcuna riga di codice!
Fai quanto segue per rendere bianco il colore del testo della barra di stato attraverso l'intera app

Sul tuo file plist di progetto :

  • Stile barra di stato: stile Transparent black style (alpha of 0.5)
  • Visualizza aspetto barra di stato basata su controller: NO
  • La barra di stato è inizialmente nascosta: NO




uistatusbar