Πώς να αλλάξετε το χρώμα του κειμένου της γραμμής κατάστασης στο iOS

Η εφαρμογή μου έχει σκούρο φόντο, αλλά στο iOS 7 η γραμμή κατάστασης έγινε διαφανής. Έτσι, δεν μπορώ να δω τίποτα εκεί, μόνο την πράσινη ένδειξη μπαταρίας στη γωνία. Πώς μπορώ να αλλάξω το χρώμα του κειμένου της γραμμής κατάστασης σε λευκό, όπως είναι στην αρχική οθόνη;

Λύση
  1. Ορίστε το UIViewControllerBasedStatusBarAppearance σε YES στο αρχείο .plist.

  2. Στο viewDidLoad κάντε ένα [self setNeedsStatusBarAppearanceUpdate];

  3. Προσθέστε την ακόλουθη μέθοδο:

     - (UIStatusBarStyle)preferredStatusBarStyle
     {
         return UIStatusBarStyleLightContent,
     }

Σημείωση: Αυτό δεν λειτουργεί για ελεγκτές μέσα στο UINavigationController, παρακαλώ δείτε το Tyson's comment below :)

Swift 3 - Αυτό θα λειτουργήσει με ελεγκτές μέσα στο UINavigationController. Προσθέστε αυτόν τον κώδικα μέσα στον ελεγκτή σας.

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

Swift 5 και SwiftUI

Για το SwiftUI δημιουργήστε ένα νέο αρχείο swift με όνομα HostingController.swift.

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Στη συνέχεια αλλάξτε τις ακόλουθες γραμμές κώδικα στο αρχείο SceneDelegate.swift

window.rootViewController = UIHostingController(rootView: ContentView())

σε

window.rootViewController = HostingController(rootView: ContentView())
Σχόλια (18)

Αυτό τεκμηριώνεται στον Οδηγός μετάβασης του iOS 7 UI, στον οποίο χρειάζεστε ένα Apple developer ID για να αποκτήσετε άμεση πρόσβαση. Το σχετικό απόσπασμα:

Επειδή η γραμμή κατάστασης είναι διαφανής, η προβολή πίσω από αυτήν φαίνεται μέσα από αυτήν. [...] Χρησιμοποιήστε μια σταθερά UIStatusBarStyle για να καθορίσετε αν το περιεχόμενο της γραμμής κατάστασης θα είναι σκούρο ή ανοιχτό: &gt, Το UIStatusBarStyleDefault εμφανίζει σκούρο περιεχόμενο. [...] &gt, UIStatusBarStyleLightContent εμφανίζει ανοιχτό περιεχόμενο. Χρησιμοποιείται όταν πίσω από τη γραμμή κατάστασης υπάρχει σκούρο περιεχόμενο.

Επίσης, ενδεχομένως ενδιαφέρει:

Στο iOS 7, μπορείτε να ελέγχετε το στυλ της γραμμής κατάστασης από έναν μεμονωμένο ελεγκτή vew και να το αλλάζετε ενώ εκτελείται η εφαρμογή. Για να επιλέξετε αυτή τη συμπεριφορά, προσθέστε το κλειδί UIViewControllerBasedStatusBarAppearance στο αρχείο Info.plist μιας εφαρμογής και δώστε του την τιμή YES.

Θα σας συνιστούσα σίγουρα να ρίξετε μια ματιά στο έγγραφο, στο οποίο, και πάλι, μπορείτε να έχετε πρόσβαση με το Apple developer ID σας.

Σχόλια (3)

Αυτό φαίνεται να είναι ένα πρόβλημα με την τρέχουσα έκδοση του Xcode και του iOS 7.

Κάποιο σχετικό περιεχόμενο στα φόρουμ προγραμματιστών της Apple's βρίσκεται στο μια αναζήτηση για το UIStatusBarStyleLightContent στο "iOS 7 Beta Livability" στα φόρουμ προγραμματιστών της Apple* (προς το παρόν 32 δημοσιεύσεις).

Έπεσα πάνω σε αυτό προσπαθώντας να το ρυθμίσω στην light έκδοση.

(Αυτό είναι απλώς μια συνέχεια της απάντησης του Aaron's).

Σχόλια (0)