Ich versuche, die Farbe der Statusleiste zu einer blauen oder einer anderen Farbe zu ändern.Ändern der Farbe der Statusleiste
Ist das möglich, oder lässt Apple das nicht zu?
Ich versuche, die Farbe der Statusleiste zu einer blauen oder einer anderen Farbe zu ändern.Ändern der Farbe der Statusleiste
Ist das möglich, oder lässt Apple das nicht zu?
Zuerst in Plist gesetzt View controller-based status bar appearance
zu NO
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) {
statusBar.backgroundColor = UIColor.blue
}
UIApplication.shared.statusBarStyle = .lightContent
return true
}
Der Ausgang Screenshot unterhalb
Hierbei werden private, nicht dokumentierte APIs verwendet, die die App-Überprüfung möglicherweise nicht bestehen. Es ist nie eine gute Idee, solche Dinge zu tun. Es wird wahrscheinlich zum Absturz kommen, besonders wenn es geschrieben wird, wenn sich die private API in einem zukünftigen iOS-Update ändert. – rmaddy
Ich hatte eine App aus diesem Grund abgelehnt, während eine andere gut angenommen wurde. Sie betrachten es als private API-Nutzung, so dass Sie während des Überprüfungsprozesses Glück haben :) - @Sebyddd – byJeevan
Ich würde diese Tatsache auf jeden Fall Ihrer Antwort hinzufügen **. – dfd
Nein, es ist nicht möglich, mit vorgefertigten öffentlichen APIs.
Aber mit der Veröffentlichung von iOS 7
, bist du das Aussehen der Statusleiste ändern erlaubt. Daher poste ich hier meine Problemumgehung.
Von einem individuellen View-Controller durch die preferredStatusBarStyle
überschrieben:
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Alternativ können Sie die Statusleiste Stil unter Verwendung des UIApplication statusBarStyle
Verfahren eingestellt. Fügen Sie dazu einen neuen Schlüssel mit dem Namen "Controller-basierte Statusleiste anzeigen" ein und legen Sie den Wert auf NO fest.
Durch Deaktivierung der Option "Controller-basierte Statusleiste anzeigen" können Sie den Statusleistenstil mithilfe des folgenden Codes festlegen.
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Am Ende die Farbe UINavigationBar
Eigenschaft Farbton wie unter
[[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]];
Um Ihre Antwort zu klären, ändern Sie die Statusleiste ** Hintergrund ** Farbe in eine ** spezifische ** Farbe? – dfd
Diese Änderung macht keinen Sinn. Das OP möchte die Statusleiste und nicht die Navigationsleiste ändern. – dfd
Bitte beziehen Sie sich auf diesen Link http://www.appcoda.com/customi-navigation-status-bar-ios-7/ – byJeevan
Sie legen für Statusleiste Hintergrundfarbe beim Programmstart oder während viewDidLoad Ihrer View-Controller ändern.
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
return true
}
}
or
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
}
}
Hier ist das Ergebnis:
Hier ist Apple Guidelines/Instruction über Statusleiste ändern. Nur Dark & Licht (während & schwarz) sind in der Statusleiste erlaubt.
Hier ist - wie Statusleiste Stil zu ändern:
Wenn Sie Statusleiste Stil festlegen möchten, Anwendungsebene festgelegt dann UIViewControllerBasedStatusBarAppearance
-NO
in Ihrer `.plist‘ Datei.
wenn Sie wan Statusleiste Stil zu setzen, auf View-Controller-Ebene gehen Sie folgendermaßen vor:
UIViewControllerBasedStatusBarAppearance
-YES
in der .plist
Datei, wenn Sie brauchen, um Statusleiste Stil auf UIViewController Ebene gesetzt .In der viewDidLoad Funktion hinzufügen - setNeedsStatusBarAppearanceUpdate
Überschreibung preferredStatusBarStyle in Ihrem View-Controller.
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Sollwert von .plist nach Statusleiste Stil Setup-Ebene.
Hier ist meine Abhilfe: ein UIView
erstellen, fügen Sie es zu Ihrer Stammansicht des View-Controller als künstliche Statusleiste Hintergrund
1.Erstellen ein UIView
// status bar's height is 20.0pt
CGRect frame = CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, 20.0);
UIView *fakeStatusBarBG = [[UIView alloc] initWithFrame:frame];
fakeStatusBarBG.backgroundColor = [UIColor yourColor];
2.Add es Die Grundansicht Ihres View-Controllers
// self is your view controller, make sure fakeStatusBarBG is the top subview in your view hierarchy
[self.view insertSubview:fakeStatusBarBG aboveSubview:yourTopSubview];
Dort gehen Sie.
3. (Zusatz) Ändern Sie die Inhaltsfarbe in der Statusleiste, nur weiß oder schwarz.
- (UIStatusBarStyle)preferredStatusBarStyle
{
if (youWantWhiteColor)
{
return UIStatusBarStyleLightContent;
}
return UIStatusBarStyleDefault;
}
Diese Problemumgehung verwendet keine private API, so dass Sie sicher. :-)
Basierend auf den zwei Antworten (mit Kommentaren), ist die Antwort (wie ich dachte) ** nein **. Sie können (1) die Schriftfarbe einer Statusleiste ändern oder (2) private APIs verwenden, aber Sie riskieren, dass Apple Ihre App ablehnt (oder schlimmer noch, sie wird später abgelehnt). – dfd