Bagaimana cara mengubah warna teks Status Bar di iOS

990

Aplikasi saya memiliki latar belakang gelap, tetapi di iOS 7 bilah status menjadi transparan. Jadi saya tidak bisa melihat apa pun di sana, hanya indikator baterai hijau di sudut. Bagaimana cara mengubah warna teks bilah status menjadi putih seperti di layar beranda?

Oleksandr Veremchuk
sumber
9
Tautan ini memiliki info menarik tentang masalah ini: doubleencore.com/2013/09/...
Adriano Lucas

Jawaban:

1380
  1. Setel UIViewControllerBasedStatusBarAppearanceke YESdalam file .plist.

  2. Di viewDidLoadlakukan a[self setNeedsStatusBarAppearanceUpdate];

  3. Tambahkan metode berikut:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }
    

Catatan : Ini tidak berfungsi untuk pengontrol di dalam UINavigationController, silakan lihat komentar Tyson di bawah ini :)

Swift 3 - Ini akan berfungsi pengendali di dalam UINavigationController. Tambahkan kode ini di dalam controller Anda.

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

Swift 5 dan SwiftUI

Untuk SwiftUI buat file swift baru bernama HostingController.swift

import Foundation
import UIKit
import SwiftUI

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

Kemudian ubah baris kode berikut di SceneDelegate.swift

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

untuk

window.rootViewController = HostingController(rootView: ContentView())
Peter B. Kramer
sumber
78
Saya tidak perlu Langkah 2.
Jason Moore
37
Tampaknya tidak berfungsi di iOS 7 Beta 5 dengan Xcode5-DP5. preferStatusBarStyle tampaknya tidak dipanggil.
wilsontgh
18
UIViewControllerBasedStatusBarAppearance diubah menjadi Lihat tampilan status berbasis pengontrol di seed Xcode 5 GM
parilogic
42
Mendapat jawaban untuk Xcode GM Seed: 1. Di Info.plist masukkan tampilan status bar berbasis pengontrol sebagai NO 2. Di appDelegate, di dalam metode appDidFinishLaunching, masukkan [[UIView]] setTintColor: [UIColor whiteColor]];
parilogic
101
UINavigationController adalah kasus khusus, hal di atas tidak akan berfungsi. Hanya menghabiskan waktu berjam-jam menggaruk-garuk kepalaku karena ini. Lihat di sini untuk solusinya: stackoverflow.com/a/19513714/505457
Tyson
848

Atau, Anda dapat memilih keluar dari tampilan status bar berbasis-pengontrol:

  1. Diatur View controller-based status bar appearanceke NOdalam Info.plist.
  2. Panggilan [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Catatan: Metode ini sudah usang di iOS9. Gunakan preferredStatusBarStylepada UIViewController sebagai gantinya. (lihat Perpustakaan Pengembang Apple )

wilsontgh
sumber
16
Ini adalah rute yang jauh lebih baik dan lebih mudah.
Mick Byrne
227
Tidak perlu kode. Itu semua dapat dilakukan dari plist: (1) set "Lihat tampilan status bar berbasis-controller" ke NO dan (2) set "style bar style" menjadi "Opaque black style". (Nilai mentah adalah UIViewControllerBasedStatusBarAppearance -> NO dan UIStatusBarStyle -> UIStatusBarStyleBlackOpaque)
SwiftArchitect
3
Perhatikan bahwa Anda harus menetapkan nilai info.plist yang relevan menjadi TIDAK agar ini berfungsi.
Abhi Beckert
9
@ gothicdev: tangkapan yang bagus. Akan menerima jawaban Anda karena ini adalah yang terbersih. Opsi ringan untuk Bar Style dapat berupa: UIStatusBarStyleLightContent
benka
9
Metode ini telah ditinggalkan di iOS 9.
lostAtSeaJoshua
439

Anda dapat melakukan ini tanpa menulis baris kode apa pun!
Lakukan hal berikut untuk membuat teks bilah status berwarna putih melalui seluruh aplikasi

Pada file proyek plist Anda :

  • Gaya bilah status: Transparent black style (alpha of 0.5)
  • Lihat tampilan bilah status berbasis pengontrol: NO
  • Bilah status awalnya disembunyikan: NO
Lucas
sumber
12
Saya tidak tahu apakah ada yang berubah, tetapi nilai UIStatusBarStyleLightContent tidak dikenali oleh XCode, dan tidak ditemukan dalam dokumentasi apa pun ... Meskipun tampaknya berfungsi.
Nathan H
5
Yang ini juga mengubahnya di layar splash, sedangkan hanya mengaturnya di navigator tidak akan ... Kudos!
viniciusnz
3
Jelas cara termudah untuk menyelesaikan ini dan seperti yang disebutkan juga berfungsi di layar splash.
7wonders
4
Tidak ada apa pun yang disebut UIStatusBarStyleLightContentdi plist infoNAMUN ada Transparent Blackyang akan melakukan trik yang sama :) plus, Anda perlu menambahkan View controller-based status bar appearancekarena tidak ada di sana awalnya dan itu semua yang Anda butuhkan untuk membuatnya bekerja :)
user1949873
45
Untuk orang-orang malas seperti saya, salin dan lewati: <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
Adam Waite
241

Catatan: Sebagian besar jawaban yang dipilih tidak berfungsi untuk iOS 7/8

Di Info.plist, tetapkan 'Lihat tampilan bilah status berbasis pengontrol' sebagai NO

Di AppDelegate tambahkan

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

untuk

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ......
   ...
}    

Solusi ini berfungsi untuk iOS 7/8

Pradeep Mahdevu
sumber
10
Dihentikan di iOS 9.: - /
sudo make install
112

Bagi saya, tidak ada yang terjadi dengan menggunakan semua hal di jawaban lain (dan dari sumber / dokumentasi lain). Apa yang membantu adalah mengatur Gaya Bilah Navigasi ke "Hitam" di XIB. Ini mengubah teks menjadi putih tanpa kode sama sekali.

Masukkan deskripsi gambar di sini

Haraldmartin
sumber
3
Di perangkat tidak ada jawaban di atas yang berfungsi untuk saya kecuali yang ini. Saya pikir itu memberitahu segalanya tentang sistem baru yang Anda harus mengatur navigation_bar ke BLACK untuk memiliki teks status_bar PUTIH.
MrTJ
2
Setelah berjuang melalui banyak hal, inilah yang akhirnya berhasil. Gaya diatur ke default. Mengubah ini dan menghapus semua peretas bilah status lainnya dan berfungsi.
Gujamin
1
Jika Anda tidak ingin mengatur semua nav bar di IB, Anda juga dapat mengatur proksi penampilannya. [[Penampilan UINavigationBar] setBarStyle: UIBarStyleBlack];
Steve Moser
3
Tidak bekerja untuk saya di iOS7 Storyboard. Sepertinya ini mungkin efek samping dari sesuatu yang lain?
Chris
Saya ingin mengkonfirmasi bahwa, semua jawaban di atas tidak bekerja untuk saya juga. Mengikuti gambar, teks bilah status tampak putih. Tapi saya ulangi lagi, JAWABAN di atas dengan Xcode 6.2 dan iOS 8.2 tidak berfungsi.
Markus
98

Tidak ada yang bekerja untuk saya, jadi di sini adalah solusi yang berfungsi ...

Di Info.plist, tambahkan baris:

UIViewControllerBasedStatusBarAppearance, dan atur nilainya NO.

Kemudian di AppDelegate in didFinishLaunchingWithOptions, tambahkan baris ini:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
stepik21
sumber
Solusi ini bekerja untuk saya sedangkan yang di atas tidak.
John Contarino
Luar biasa tetapi UIViewControllerBasedStatusBarAppearance ini dikonversi menjadi sama: Lihat tampilan status bar berbasis-pengontrol secara otomatis :)
Abhishek Thapliyal
63

Anda tidak perlu melakukan kode apa pun untuk ini

Anda perlu menambahkan kunci "Lihat tampilan bilah status berbasis pengontrol" di info. Daftar sebagai berikut: masukkan deskripsi gambar di sini

& setel nilai nilainya ke Boolean & nilainya menjadi NO. Kemudian klik pada pengaturan proyek, lalu klik pada General Tab & di bawah Deployment Info atur gaya bar status yang disukai ke .Light sebagai berikut:

masukkan deskripsi gambar di sini

Itu dia.

Ajinkya Patil
sumber
1
Saya menyukai pendekatan Anda! Dalam kasus saya, saya mencoba mencari cara membuat gaya bilah status menjadi ringan hanya ketika layar penuh (tanpa bilah navigasi). Kemudian, saya menyadari bahwa semua layar lainnya harus sesuai dengan gaya cahaya yang sama. Jadi solusi yang baik adalah mengatur semuanya. Terima kasih! (:
Igor de Lorenzi
Jika Anda tidak perlu mengubah ini saat aplikasi Anda sedang berjalan. Ini adalah pendekatan terbaik.
Michael
Pendekatan ini pasti berhasil tetapi memperkenalkan masalah aneh di iPad. Seandainya aplikasi Anda mendukung deeplink, dan ketika Anda meluncurkan aplikasi melalui deeplink, backlink yang muncul di bilah status menghilang.
Chitranshu Asthana
Terbaik dan paling sederhana.
Amit Kumar
solusi terbaik untuk saya: D
Gold Chicken
48

Hanya dua langkah sebagai berikut:

Langkah 1:

Di bawah tab Info pada project target, Tambahkan Baris:

UIViewControllerBasedStatusBarAppearance, tetapkan nilai NO.

Langkah 2:

Dalam proyek AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{[application setStatusBarStyle:UIStatusBarStyleLightContent];}
kebodohan
sumber
4
Saya suka jawaban ini karena ini pertama kalinya saya menggunakan "aplikasi" param))
MUH Mobile Inc.
Notasi dot dan itu akan menjadi sempurna;)
Rivera
43

Ini berfungsi di Golden Master iOS 7 dan Xcode 5 GM seed dan iOS7 SDK yang dirilis pada 18 September 2013 (setidaknya dengan pengontrol navigasi yang disembunyikan):

  1. Diatur the UIViewControllerBasedStatusBarAppearanceke NOdalam Info.plist.

  2. Dalam ViewDidLoadmetode atau di mana saja, di mana Anda ingin mengubah gaya bilah status: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Deniss Fedotovs
sumber
1
Nilai default UIViewControllerBasedStatusBarAppearance tampaknya YA. "Aplikasi bawaan untuk menggunakan sistem manajemen bilah status berbasis pengontrol tampilan baru. Untuk menyisih dari ini, tambahkan nilai NO untuk kunci UIViewControllerBasedStatusBarAppearance ke Info.plist Anda." [ bgr.com/2013/09/10/ios-7-gm-change-log-release-notes/]
Zsolt
1
Ya !! Setelah mengatur UIViewControllerBasedStatusBarAppearance ke NO, status bar bersembunyi di tampilan.
Uang Tunai 李秉骏
haruskah itu diterapkan ke semua viewdidload?
Arnlee Vizcayno
Anda dapat menambahkannya hanya dalam metode appDelegates didFinishLoading. Atau dalam pandangan pertama metode viewDidLoad jika Anda tidak ingin itu berubah.
Deniss Fedotovs
1
fantastis, yang ini berhasil. coding sederhana dan hebat.
Felipe
32

Jika UIViewController berada di dalam UINavigationController, Anda harus mengatur BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

Jawaban Asli ada di sini

https://devforums.apple.com/message/844264#844264

Mohit Padalia
sumber
Tidak, ini hanya membuat warna bilah navigasi sama dengan warna teks bilah status. Ini menyembunyikan masalahnya, bukan memperbaikinya!
wpearse
2
Di iOS7 bilah status akan meniru UINavigationBar jika tampilan berisi UINavigationController, jadi dalam banyak kasus, ini adalah jawaban yang benar.
Jonstaff
29

Jika Anda memiliki pengontrol navigasi tertanam yang dibuat melalui Interface Builder , pastikan untuk mengatur yang berikut di kelas yang mengelola pengontrol navigasi Anda:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

Hanya itu yang Anda butuhkan.

matt bernardo
sumber
Ini adalah satu-satunya solusi yang bekerja untuk saya dalam aplikasi storyboard-kurang dan xib-kurang. Harus bermanfaat bagi pengguna non-IB juga.
Johnny Sparks
2
Ini sempurna bagi saya ketika saya perlu mengatur gaya berbeda di setiap pengontrol tampilan
Ben
Jika Anda ingin mempertahankan "Lihat tampilan bilah status berbasis pengontrol" disetel ke ya, inilah cara yang harus dilakukan. Terima kasih!
cloudsurfin
28

Saya menggunakan Xcode 6 beta 5 pada proyek Swift , untuk aplikasi iOS 7.

Inilah yang saya lakukan, dan berhasil:

daftar info:

Masukkan deskripsi gambar di sini

fancoolo
sumber
2
Terima kasih sepertinya hanya solusi Anda yang bekerja dengan versi terbaru iOS7
Dekel Maman
Solusi ini menunjukkan bilah status saat memuat aplikasi, di layar peluncuran.
Juan Boero
Memecahkan masalah saya di xCode 7.1. Versi terbaru. Apple lupa beberapa potong penting untuk membuat sesuatu bekerja. Lagi.
Michael
22

Di AppDelegate.m, tambahkan berikut ini.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

Dan dalam file Plist, atur 'Lihat tampilan status bar berbasis pengontrol' ke NO.

neo D1
sumber
20

Cukup Di Appdelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Vivek Sehalagi
sumber
5
Satu-satunya jawaban yang benar-benar bekerja untuk saya.
Wim Haanstra
6
Tetapi untuk ini kita perlu memilih tampilan tampilan status berbasis pengontrol .
iamyogish
Dihentikan di iOS9
Dimitris
20

Nah, ini benar-benar berfungsi seperti sepotong kue untuk saya.

Buka aplikasi Anda info.plist.

  1. Setel View controller-based status bar appearancekeNO
  2. Setel Status bar stylekeUIStatusBarStyleLightContent

Lalu pergi ke delegasi aplikasi Anda dan rekatkan kode berikut ini di mana Anda mengatur RootViewController windows Anda.

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
    [self.window.rootViewController.view addSubview:view];
}

Bingo. Ini bekerja untuk saya.

Shahid Iqbal
sumber
1
saya pikir ini adalah jawaban yang benar (bagian dari daftar) ... mengapa saya menambahkan kode statis pada didfinishlaunchingwithoptions ... Jika Anda memerlukan warna yang sama untuk seluruh aplikasi ini adalah cara yang tepat
user2387149
20
  1. Pergi ke Project-> Target,

  2. Kemudian atur Status Bar Styleke Light. Itu membuat status-bar putih dari layar peluncuran. Pengaturan Proyek

  3. Kemudian set View controller-based status bar appearancesama dengan NOdi Info.plist.

Wanbok Choi
sumber
2
Bagian kedua di mana Anda mengatur sebenarnya View controller-based status bar appearance equaluntuk NOitu bagian saya hilang. Terima kasih
Will
18

Ubah info PLIST In Swift 3 sangat mudah hanya dengan 2 langkah. Buka info.plist Anda dan ubah kunci View controller-based status bar appearancemenjadi "TIDAK". Kemudian di Appdelegate cukup tambahkan baris ini dalam metode didfinishlaunchingwithoptions

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }

ini telah ditinggalkan di iOS9 sekarang Anda harus melakukan override properti ini di rootviewcontroller

melakukan ini sudah ditinggalkan di iOS 9 harus melakukan ini pada rootviewcontroller

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }
James Rochabrun
sumber
1
Ini hanya bro yang luar biasa :) Terima kasih.
Naresh Reddy M
melakukan ini telah ditinggalkan di iOS 9 harus melakukan ini pada rootviewcontroller menimpa var preferedStatusBarStyle: UIStatusBarStyle {return .lightContent}
James Rochabrun
17

iOS 7 memungkinkan pengontrol tampilan individual untuk menentukan tampilan bilah status, seperti yang dijelaskan oleh dokumentasi pengembang Apple:

iOS 7 memberi pengontrol tampilan kemampuan untuk menyesuaikan gaya bilah status saat aplikasi sedang berjalan. Cara yang baik untuk mengubah gaya bilah status secara dinamis adalah dengan menerapkan preferredStatusBarStyledan — dalam blok animasi — memperbarui tampilan dan panggilan bilah status setNeedsStatusBarAppearanceUpdate.

Mengatur tampilan status bar secara global adalah proses dua langkah.

Pertama, Anda perlu memberi tahu iOS bahwa Anda tidak ingin mengatur tampilan bilah status berdasarkan tampilan demi tampilan.

Maka Anda perlu mengambil alih dan benar-benar mengatur gaya bar status global baru.

Untuk menonaktifkan kontrol bilah status tampilan-per-lihat, Anda harus mengatur View controller-based status bar appearanceproperti tersebut Info.plist.

Buka Project Navigator dan pilih proyek untuk aplikasi iOS Anda, lalu pilih tab Info.

Arahkan lebih dari satu baris, lalu klik tanda plus yang muncul untuk menambahkan properti baru ke Anda .plist.

Masukkan View controller-based status bar appearancebidang Key, lalu pastikan bidang Type diatur ke Boolean. Terakhir, masukkan NOdi bidang Nilai.

Untuk menetapkan gaya global untuk bilah status, tambahkan properti lain di bawah tab Info dengan kunci Status bar style, Tipe Stringdan Nilai Opaque black style.

Berikut ini posting blog dengan sedikit lebih detail dan beberapa kode contoh:

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/

Josh Earl
sumber
Terima kasih. Masalah saya adalah bahwa saya tidak melihat bahwa jenis "Lihat tampilan status berbasis pengontrol" disetel ke String. Mengedit file .plist "dengan tangan" dan memasukkan nilai boolean membersihkan semuanya.
Chris Prince
12

Tidak perlu melakukan beberapa tambahan, cukup tulis kode ini di viewController Anda dan dapatkan warna bilah status putih

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
Mohit Tomar
sumber
Letakkan ini di bawah ViewController.m setelah implementasi. Ini yang termudah dan bekerja dengan sangat baik! Mohit terima kasih!
Phil Mulkins
12

Jawaban diperbarui untuk untuk Xcode GM Seed:

  1. Di Info.plistmasukkan View controller-based status bar appearancesebagaiNO

  2. Dalam proyek tersebut, atur:

    Masukkan deskripsi gambar di sini

  3. Di ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

parilogis
sumber
Itu mengubah bilah tab, bukan bilah status untuk saya.
Keith
11

Saya pikir semua jawaban tidak benar-benar menunjukkan masalah karena semuanya bekerja dalam skenario tertentu. Tetapi jika Anda perlu untuk menutupi semua kasus, ikuti poin di bawah ini:

Bergantung pada di mana Anda memerlukan gaya lampu bilah status, Anda harus selalu mengingat 3 poin ini:

1) Jika Anda memerlukan bilah status di layar peluncuran atau di tempat lain, di mana Anda tidak dapat mengontrolnya (tidak dalam pengontrol tampilan, melainkan beberapa elemen / momen yang dikontrol sistem seperti Layar Luncurkan) Anda membuka pengaturan proyek Anda Pengaturan proyek

2) jika Anda memiliki pengontrol di dalam pengontrol navigasi Anda dapat mengubahnya di pembuat antarmuka sebagai berikut:

a) Pilih bilah navigasi dari pengontrol navigasi Anda Pilih bilah navigasi dari pengontrol navigasi Anda

b) Kemudian atur gaya bilah navigasi ke "Hitam", karena ini berarti Anda akan memiliki "hitam" -> latar belakang gelap di bawah bilah status Anda, sehingga bilah status akan menjadi putih

masukkan deskripsi gambar di sini

Atau lakukan dalam kode sebagai berikut

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Jika Anda memiliki pengontrol sendiri yang perlu memiliki gaya bilah status sendiri dan tidak tertanam dalam beberapa struktur wadah sebagai UINavigationController

Setel gaya bilah status dalam kode untuk pengontrol:

Mengatur gaya bilah status dalam kode

Fawkes
sumber
tolong jelaskan kasus Anda dan saya akan mencoba membantu
Fawkes
1
Saya harus menambahkan StatusBarIsIntiallyHidden = TIDAK ke plist serta ViewControllerBasedApplicationStatusBarAppearnce = TIDAK ke plist. Kemudian ini bekerja menggunakan bagian satu
Michael
Apakah Anda memiliki splashscreen yang memiliki "gambar" yang sama dengan pengontrol tampilan pemuatan pertama? Dan juga, di bagian "Info" target Anda, Anda dapat mencoba mengatur "Sembunyikan bilah status" menjadi false dan menghindari berurusan dengan .plist Anda. Bendera "StatusBarIsIntiallyHidden"
Fawkes
Saya tidak. Itu menggunakan xib default yang dihasilkan.
Michael
Saya benar-benar menemukan masalah ini ketika membuat proyek baru di xCode 7.1 yang mengapa saya pikir itu sangat aneh
Michael
10

Cukup menelepon

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

dalam

-(BOOL)application:(UIApplication *)application 
           didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

metode AppDelegatekarya saya bagus untuk saya di iOS7.

Cagdas Altinkaya
sumber
Wow, banyak omong kosong di sini tapi jawaban ini berhasil untuk saya. Saya menggunakan Xcode 6 dan iOS 8 SDK
Ethan Parker
1
Luar biasa, bekerja untuk saya di iOS 9 denganView controller-based status bar appearance = NO
dstudeba
9

Ini didokumentasikan dalam Panduan Transisi UI iOS 7 , yang Anda perlukan untuk mengakses ID pengembang Apple secara langsung. Kutipan yang relevan:

Karena bilah status transparan, tampilan di belakangnya terlihat jelas. [...] Gunakan UIStatusBarStylekonstanta untuk menentukan apakah konten statusbar harus gelap atau terang:

UIStatusBarStyleDefaultmenampilkan konten gelap. [...]

UIStatusBarStyleLightContentmenampilkan konten ringan. Gunakan saat konten gelap berada di belakang bilah status.

Mungkin juga menarik:

Di iOS 7, Anda dapat mengontrol gaya bilah status dari pengontrol vew individual dan mengubahnya saat aplikasi berjalan. Untuk ikut serta dalam perilaku ini, tambahkan UIViewControllerBasedStatusBarAppearancekunci ke Info.plistfile aplikasi dan berikan nilainya YES.

Saya pasti akan merekomendasikan melihat melalui dokumen, yang, sekali lagi, Anda dapat mengakses dengan ID pengembang Apple Anda.

Aaron Miller
sumber
3
Saya sudah mencoba [aplikasi setStatusBarStyle: UIStatusBarStyleLightContent]; tetapi sebenarnya tidak ada yang berubah, warna teks masih hitam
Oleksandr Veremchuk
Saya ingin lebih membantu, tetapi seperti yang saya katakan, saya tidak cukup akrab dengan proses pengembangan iOS untuk mengetahui apa yang disarankan. Maaf!
Aaron Miller
1) atur UIViewControllerBasedStatusBarAppearance menjadi YA dalam daftar 2) di viewDidLoad lakukan [self setNeedsStatusBarAppearanceUpdate]; 3) tambahkan metode berikut :-( UIStatusBarStyle) preferStatusBarStyle {return UIStatusBarStyleLightContent; }
Peter B. Kramer
9

Berikut ini adalah Panduan / Instruksi Apple tentang perubahan status bar. Hanya Gelap & terang (sementara & hitam) diizinkan di bilah status.

Inilah - Cara mengubah gaya bilah status:

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

jika Anda ingin mengatur gaya bilah status, pada tingkat pengontrol tampilan lalu ikuti langkah-langkah ini:

  1. Setel UIViewControllerBasedStatusBarAppearanceke YESdalam .plistfile, jika Anda perlu mengatur gaya bilah status di level UIViewController saja.
  2. Dalam fungsi add viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. menimpa preferStatusBarStyle di pengontrol tampilan Anda.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

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


Berikut adalah beberapa trik untuk mengubah / mengatur warna latar belakang untuk bilah status selama peluncuran aplikasi atau selama viewDidLoad dari 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
    }

}



Ini hasilnya:

masukkan deskripsi gambar di sini

Krunal
sumber
8

Saya melakukan beberapa hal yang berbeda dan berfungsi untuk saya.

Tanpa perubahan kode, saya mengkonfigurasi file .plist saya seperti ini:

  • Lihat tampilan bilah status berbasis pengontrol> NO
  • Gaya bilah status> UIStatusBarStyleLightContent (string sederhana)

Saya harap ini membantu.

sunting

Untuk setiap pengontrol tampilan, saya mengubah properti Metrik Simulasi "status bar", di storyboard, dari "disimpulkan" menjadi "Konten Ringan"

Felipe Antonio Cardoso
sumber
8

Jika Anda menginginkan hasil yang sama dengan Swift, Anda dapat menggunakan kode ini di file AppDelegate.swift Anda:

UINavigationBar.appearance().barStyle = .BlackTranslucent

Dan teks bilah status Anda akan menjadi putih :-)!

fraxool
sumber
8

Jika Anda masih ingin menggunakan View controller-based status bar appearanceinfo.plist yang disetel ke YA, artinya Anda dapat mengubah bilah status untuk setiap pengontrol tampilan, gunakan yang berikut ini untuk teks putih di bilah status di ViewDidLoad:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
eirik
sumber
Bilah navigasi! = Bilah status.
Michael Peterson
... Apakah kamu sudah mencobanya!? (Dan ya, untuk bilah status)
eirik
7

Di Plist, tambahkan ini:

  • Gaya bilah status: UIStatusBarStyleLightContent
  • Lihat tampilan bilah status berbasis pengontrol: NO
Ramdha
sumber
7

di info.plist atur nilai field NO View tampilan status bar berbasis pengontrol dan atur lampu gaya statusbar di target> pengaturan umum.

Parvind
sumber
2
pemenang pemenang makan malam ayam
tommybananas
7

Biarkan saya memberi Anda jawaban lengkap untuk pertanyaan Anda. Mengubah warna teks status bar sangat mudah tetapi sedikit membingungkan di iOS 7 khusus untuk pemula.

Jika Anda mencoba mengubah warna dari hitam menjadi putih di Storyboard dengan memilih pengontrol tampilan dan pergi ke Metrik Simulasi di sisi kanan, itu tidak akan berfungsi dan saya tidak tahu mengapa. Itu harus bekerja dengan mengubah seperti ini tetapi bagaimana pun caranya.

Kedua, Anda tidak akan menemukan properti UIViewControllerBasedStatusBarAppearance di plist Anda tetapi secara default tidak ada. Anda harus menambahkannya sendiri dengan mengeklik tombol + dan kemudian mengaturnya menjadi TIDAK.

ios 7 warna teks status bar

Terakhir, Anda harus membuka file AppDelegate.m Anda dan menambahkan yang berikut ini di metode didFinishLaunchingWithOptions, tambahkan baris berikut:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Ini akan mengubah warna menjadi putih untuk semua pengontrol tampilan Anda. Semoga ini membantu!

Amit Shelgaonkar
sumber
Metode ini tidak digunakan lagi di iOS 9
Trung Bui