Mengubah warna teks bilah status di layar splash iOS 7

98

Saya tahu itu sudah ada beberapa pertanyaan stackoverflow yang mengatakan bagaimana mengubah bilah status untuk semua pengontrol tampilan. Saat ini saya mengubah warna bilah status dengan cara ini:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Dalam application:DidFinishLaunching

Selain itu, saya telah mengubah nilai UIViewControllerBasedStatusBarAppearancedi dalam plist menjadi NO. Namun, di splashscreen masih menampilkan teks bilah status dengan warna hitam.

Apakah mungkin untuk mengubah warna warna teks bilah status di layar splash ?

Tiago Almeida
sumber
Apa maksud Anda 'itu masih menampilkan bilah status dengan warna hitam': Jika kode Anda berfungsi, font bilah status harus putih, warna latar bilah status tergantung pada gambar splash Anda (yang sekarang harus menyertakan tinggi bilah status - 20 piksel)
Vinzzz
Maaf, saya sangat merindukan kata teks. Saya hanya mengubah warna teks dari bilah status. Saya dapat mengubahnya setelah layar splash terjadi tetapi saya tidak dapat mengubahnya ketika layar splash terjadi.
Tiago Almeida

Jawaban:

224

Dalam file plist proyek tambahkan properti "Status Bar Style" (key is UIStatusBarStyle ). Kemudian abaikan semua kemungkinan nilai yang tercantum di tarik-turun untuk properti dan jenis ini UIStatusBarStyleLightContentsebagai gantinya.

Dan Anda tidak perlu menyetelnya UIViewControllerBasedStatusBarAppearanceke NOdalam plist, Anda dapat menyetel preferredStatusBarStylepengontrol tampilan yang Anda inginkan.

Vinzzz
sumber
Apakah ada cara untuk membuatnya kompatibel dengan bilah status berwarna di iOS 6?
Rafael Nobre
1
Warna teks bilah status putih, atau hitam. Latar belakang bilah berasal dari gambar peluncuran Anda, lalu dari tampilan viewController Anda jika meluas di bawah bilah.
Vinzzz
1
Setelah BANYAK metode yang berbeda, yang ini AKHIRNYA bekerja (dengan UIViewControllerBasedStatusBarAppearance diatur ke NO). Anda adalah seorang pahlawan.
Tamás Sengel
Anda juga dapat melakukan ini melalui kode UIApplication.sharedApplication (). statusBarStyle = .LightContent. Saya melakukannya di AppDelegate
Yasmin Tiomkin
@Yasmin: untuk mengubah warna SETELAH splash screen, solusi ini sudah menjadi bagian dari pertanyaan;)
Vinzzz
33

Anda dapat melakukan ini tanpa menulis baris kode apa pun.
Lakukan hal berikut untuk membuat warna teks bilah status menjadi putih di seluruh aplikasi

Di file project plist Anda :

  • Gaya bilah status: UIStatusBarStyleLightContent
  • Lihat tampilan bilah status berbasis pengontrol: NO
  • Bilah status awalnya tersembunyi: NO
Lucas
sumber
Jawaban yang diterima bagus, tetapi tidak berfungsi pada semua pengontrol tampilan saya tanpa melakukan poin ke-2 di atas. Terima kasih!
Clifton Labrum
"Lihat tampilan bilah status berbasis pengontrol: YES" tampaknya masih berhasil (iOS 9)
Nicolas Miari
19

Anda dapat melakukan hal-hal berikut untuk mendapatkan status bar warna terang di seluruh aplikasi.

  1. Pilih nama proyek di navigator proyek.
  2. Pilih nama target dari daftar di kolom kiri editor proyek.
  3. Klik Umum di bagian atas editor proyek.
  4. Atur Gaya Status Bar -> Cahaya

Di file plist Anda, tambahkan nilai berikut:

  1. Gaya bilah status - UIStatusBarStyleLightContent
  2. Lihat tampilan bilah status berbasis pengontrol - TIDAK

Ini akan membantu Anda mendapatkan bilah status dalam warna PUTIH di seluruh aplikasi termasuk LAYAR SPLASH.

VM Anooj
sumber
7

Setel UIViewControllerBasedStatusBarAppearanceke Tidak di plist

Kemudian tambahkan kode berikut dalam opsi peluncuran selesai

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

Silakan ikuti kode ini, itu berhasil untuk saya

Preejith augustine
sumber
ini menunjukkan teks putih pada bilah status sementara latar belakang saya juga terang. bagaimana saya bisa menampilkan teks hitam
Mangesh
Mangesh on the Target pergi ke pengaturan umum di sana Anda akan memiliki opsi untuk mengatur gaya status bar
Preejith augustine
Anda sebenarnya dapat menulis baris pertama itu sedikit lebih sederhana menggunakan sintaks titik, seperti ini: if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
Todd Lehman
2

Berikut adalah Panduan / Instruksi Apple tentang perubahan bilah status.

Berikut ini - Cara mengubah gaya bilah status:

Jika Anda ingin mengatur gaya bilah status, tingkat aplikasi kemudian diatur UIViewControllerBasedStatusBarAppearanceke NOdalam file `.plist 'Anda.

Jika Anda ingin menyetel gaya bilah status, pada tingkat pengontrol tampilan, ikuti langkah-langkah berikut:

  1. Setel UIViewControllerBasedStatusBarAppearanceke YESdalam .plistfile, jika Anda perlu menyetel gaya bilah status hanya pada level UIViewController.
  2. Dalam fungsi penambahan viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. override preferStatusBarStyle di pengontrol tampilan Anda.

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Tetapkan nilai .plist sesuai dengan tingkat penyiapan gaya bilah status. masukkan deskripsi gambar di sini


Anda dapat menyetel warna latar belakang untuk bilah status selama peluncuran aplikasi atau selama viewDidLoad pengontrol tampilan Anda.

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
    }

}



Inilah hasilnya:

masukkan deskripsi gambar di sini

Krunal
sumber
1

Anda dapat melakukan hal-hal berikut untuk mendapatkan status bar warna terang di seluruh aplikasi.

Pilih nama proyek di navigator proyek. Pilih nama target dari daftar di kolom kiri editor proyek. Klik Umum di bagian atas editor proyek. Atur Gaya Status Bar -> Cahaya

Usman Nisar
sumber