2012-09-20 7 views
13

Ich habe folgende Konstellation:Wie Statusbar auf Modal ändern Ansichten iOS 6

Hauptansicht (Custom UIViewController, keine Navigation oder Navigationsleiste), enthält eine Schaltfläche, die modal zu einer zweiten Tabellenansicht Controller segues, das ist in einer Navigation Controller eingebettet:

Mainview -> Navigation Controller -> Tableview

auf dem Mainview in der Statusleiste ist Schwarz (keine Änderungen mit iOS 6 - selbst dann, wenn die Statusleiste auf Standard gesetzt ist) auf dem Tableviewcontroller Die Statusleiste sollte den Standard Style haben (grau in iOS 5, Blu e Getönt durch Navigationsleiste in iOS 6).

In iOS 5 Dies wurde durch die folgenden Codezeilen in Tableviewcontroller einfach:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarStyle:)]) { 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 
} 

Ausführen dieses unter iOS 6 unter Hinweis darauf, geschieht. Wie kann ich das machen? Ich habe alle möglichen Statusleisteneinstellungen unter Projektzusammenfassung und im plist (wie hier beschrieben: https://stackoverflow.com/a/12468689/1685971)

ausprobiert. Auch im Storyboard sieht alles gut aus. Ausführen der App im Simulator oder auf dem Gerät sieht es anders aus: Storyboard Simulator

Antwort

5

versuchen, diese "Hack" : Sie müssen Ihrem ersten View-Controller eine Navigationsleiste hinzufügen. Dann haben Sie zwei Möglichkeiten.

1) Stellen Sie den Alpha-Wert von der Navigationsleiste auf 0

oder

2) Stellen Sie die y-Position der Stange -43px (hier: http://moduscreate.com/tinting-your-status-bar-in-ios6-and-phonegap/)

EDIT:

Um die richtigen Farben zu erhalten, müssen Sie die TintColor der unsichtbaren UINavigationBar setzen. Also setze es standardmäßig schwarz. In Ihrer Button-Aktion müssen Sie die tintColor auf Ihre navigationController.navigationBar.tintColor setzen. Bei der Aktion Ihrer Schließen-Schaltfläche müssen Sie sie auf [UIColor blackColor] zurücksetzen.

+0

Imo Die Feature-Statusleiste Tönung wird von Apple nicht sauber implementiert. Ihre Lösung ist eine Problemumgehung. Die saubere Lösung sollte sein, dass die App auf jedem View-Controller nach dem Statusleisten-Farbton sucht - nicht nur auf dem ersten View-Controller. – FrankZp

2

Die erste View-Controller eine Navigationssteuerung/bar für die Funktion zu arbeiten haben. Die Statusleiste ändert in Ihrer App (in iOS6) nicht die Farbe, sondern passt sich an die Navigationsleistenfarbe Ihrer Startansicht an. Wenn Ihre Startansicht keine Navigationsleiste enthält, passt die Statusleiste die Farbe nicht an. (Siehe http://i.stack.imgur.com/n9ubK.png)

+0

Ja, diese neue Funktion wählt die Farbe der oberen Navigationsleiste aus, um die Statusleiste zu färben. Voraussetzung ist jedoch, dass der erste View Controller keine Navigationsleiste besitzt.In iOS 5 war dies mit dem obigen Code möglich. Aber in iOS 6 ist die Statusleiste nicht änderbar! – FrankZp

+1

_Auf dem TableViewController sollte die Statusleiste den Standard-Stil haben (grau in iOS 5, blau getönt aufgrund der Navigationsleiste in iOS 6). Diese Annahme ist falsch. –

+0

Der oben gezeigte Code setzt die Statusleiste des TableViewControllers auf den Standardstil. Dies funktioniert in iOS5 - nicht in iOS6 (Statusleiste bleibt schwarz - siehe Screenshot Simulator). – FrankZp

0

Sie müssen den Stil für die Navigationsleiste nicht zu Ihrem TableView-Controller festlegen.

Versuchen Sie diesen Ansatz. 1. Fügen Sie der Hauptansicht den Navigationscontroller hinzu. 2. Setzen Sie die Eigenschaft auf Ja. 3. Wenn Sie Tableviewcontroller anzuzeigen, setzen Sie die Navigationsleiste auf No

Navigation Controller

versteckt -> bar versteckt = yes -> Mainview -> bar versteckt = no -> Tableview

+0

Das Problem ist, dass der TableViewController modal angezeigt wird. Daher können MainViewController und TableViewController nicht in denselben Navigationscontroller eingebettet werden (siehe Storyboard-Screenshots). Wenn zwei Navigation Controller verwendet werden (einer für MainView und einer für TableView), bleibt das oben beschriebene Problem gleich ... – FrankZp

Verwandte Themen