2014-09-11 10 views
23

Qualcuno ha notato che il colore della barra di stato per il simulatore iPhone 6 non sta utilizzando lo stile corretto?iPhone 6 Colore barra di stato

Ho UIStatusBarStyle impostato su UIStatusBarStyleLightContent e UIViewControllerBasedStatusBarAppearance impostato su NO.

Questo funziona bene per tutti i telefoni su iOS8 tranne 6 e 6 Plus. Nella mia appDelegate sono in grado di impostarlo usando UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false) ma questo non lo imposta per la schermata di avvio. Vuole ancora il buio quando vorrei un contenuto leggero. Qualcuno ha una soluzione per questo. C'è un nuovo elemento ho bisogno di aggiungere il plist?

+2

Avendo lo stesso problema, mi chiedo se è un bug del simulatore o qualcos'altro? – JeffN

+0

Sembra un problema con il simulatore. – db42

+2

Lo stesso problema qui. Ma è solo al momento del lancio. Una volta caricata la vista, diventa bianca. –

risposta

15

Una possibilità è quella di impostare UIViewControllerBasedStatusBarAppearance-YES nel plist, e poi in ogni controller di vista avere questo metodo

- (UIStatusBarStyle) preferredStatusBarStyle { 
    return UIStatusBarStyleLightContent; 
} 

Si tratta di un dolore nel culo da fare e sicuramente non la soluzione più bella. Così com'è, questo funziona su tutti i miei controller di visualizzazione, ma uno, che sto ancora cercando una soluzione alternativa per questo.

EDIT

trovato una soluzione migliore. Mantienia NO e Status bar style a UIStatusBarStyleLightContent in plist, quindi aggiungi l'immagine di avvio corretta selezionando + -> New Launch Image dalle risorse Immagine. Ciò impedirà a iPhone 6/6 + di ridimensionare l'app fino alle dimensioni dello schermo e di mostrare la barra di stato della luce. Le dimensioni dello schermo sono corretti:

iPhone 4/4S: 640x960 px 
iPhone 5/5S: 640x1136 px 
iPhone 6: 750x1334 px (edited) 
iPhone 6+: 1242x2208 px 

Non posso prendere credito per questo, solo testimoniare che ha funzionato. Qui è dove ho trovato la soluzione https://stackoverflow.com/a/25985800/3247035 e http://beageek.biz/how-to-create-launch-images-app-xcode-ios/

+0

Nel mio caso ho dovuto sottoclasse i miei UINavigationControllers nello storyboard e ho inserito il metodo preferitoStatusBarStyle. Mettendolo nei controller della nav non ha fatto nulla. –

+0

La prima soluzione di @pfryerda ha risolto i miei problemi e non si tratta di molto lavoro extra. – MartinR

0

risposta pfryerda è corretta con l'immagine di lancio è la soluzione al problema. Ho risolto il problema senza nemmeno saperlo. Ho utilizzato la nuova sezione Launch Screen File della scheda Informazioni generali e ho impostato la schermata di avvio come se fosse uno storyboard separato. Nello storyboard ho creato una vista che è stata ridimensionata a schermo intero e so che questo problema è più lungo poiché la schermata di avvio è sempre della giusta dimensione.

Giusto per ricapitolare su come creare uno storyboard schermata di lancio:

  1. Creare un file vuoto denominato storyboard LaunchScreen.storyboard.

  2. Passare alle impostazioni di destinazione e, nella scheda Generale, selezionare lo storyboard come file di schermata di avvio. Xcode aggiungerà una chiave UILaunchStoryboard corrispondente alla Info.plist della tua app. Quando questa chiave è presente, Xcode assegnerà la priorità a qualsiasi immagine di avvio che potresti aver impostato.

  3. Aggiungere una scena di controller di visualizzazione allo storyboard. Aggiungi alcuni sottoview alla scena e posizionali con vincoli. Quando avvii l'app su un dispositivo, il sistema operativo dovrebbe utilizzare la scena come schermata di avvio.

È possibile saperne di più qui: http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/

1

ho anche parlato di questo in risposta a this post, ma l'unico lavoro intorno ho trovato è quello di convertire la vostra applicazione per utilizzare l'iPhone 6 e 6 + risorse.

Una volta fornite le risorse della schermata di caricamento correttamente dimensionate nel gestore delle risorse, l'app rispetterà le impostazioni dello stile della barra di stato.

Da https://developer.apple.com/library/iOS/documentation/userexperience/conceptual/mobilehig/LaunchImages.html

For iPhone 6: 

750 x 1334 (@2x) for portrait 
1334 x 750 (@2x) for landscape 

For iPhone 6 Plus: 

1242 x 2208 (@3x) for portrait 
2208 x 1242 (@3x) for landscape 

Si dovrebbe anche controllare due volte che si sta impostando una barra di stato stile di UIStatusBarStyleLightContent. Questo può essere fatto in due modi:

  • In info.plist dell'applicazione set UIStatusBarStyle = UIStatusBarStyleLightContent
  • l'override del metodo preferredStatusBarStyle: in tutte le UIViewController del caso all'interno del progetto. (Per questa opzione, assicurarsi che nel info.plist dell'applicazione avete UIViewControllerBasedStatusBarAppearance = YES)
7

ho avuto lo stesso problema e risolto da

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self setNeedsStatusBarAppearanceUpdate]; 
} 

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

sono pigro, così ho creato una controller per aggiungerlo e tutti gli altri ereditarlo