İOS'ta Durum Çubuğu metin rengini değiştirme


990

Uygulamamın koyu bir arka planı var, ancak iOS 7'de durum çubuğu şeffaf oldu. Orada hiçbir şey göremiyorum, sadece köşedeki yeşil pil göstergesi. Durum çubuğu metin rengini ana ekranda olduğu gibi beyaza nasıl değiştirebilirim?


9
Bu bağlantı bu konuda ilginç bilgiler içeriyor
Adriano Lucas

Yanıtlar:


1380
  1. Set UIViewControllerBasedStatusBarAppearanceiçin YES.plist dosyasında.

  2. In viewDidLoaddo a[self setNeedsStatusBarAppearanceUpdate];

  3. Aşağıdaki yöntemi ekleyin:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }

Not : Bu, içindeki kontrolörler için çalışmaz UINavigationController, lütfen aşağıdaki Tyson'ın yorumuna bakın :)

Swift 3 - Bu içeride kontrolörler çalışacak UINavigationController. Bu kodu kumandanıza ekleyin.

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

Swift 5 ve SwiftUI

SwiftUI için yeni bir hızlı dosya oluşturun HostingController.swift

import Foundation
import UIKit
import SwiftUI

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

Ardından, aşağıdaki kod satırlarını SceneDelegate.swift

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

için

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

78
Adım 2'ye ihtiyacım yoktu
Jason Moore

37
Xcode5-DP5 ile iOS 7 Beta 5 üzerinde çalışmıyor gibi görünüyor. prefertsBarStyle çağrılmış gibi görünmüyor.
wilsontgh

18
UIViewControllerBasedStatusBarAppearance, Xcode 5 GM tohumunda denetleyici tabanlı durum çubuğu görünümünü görüntüleme olarak değiştirildi
parilogic

42
Xcode GM Seed için cevabı aldım: 1. Info.plist'de kontrolör tabanlı durum çubuğu görünümünü NO 2 olarak ayarlayın. AppDelegate'de appDidFinishLaunching yönteminin içine [[UIView görünüm] setTintColor: [UIColor whiteColor]];
parilogic

101
UINavigationController özel bir durumdur, yukarıdaki çalışmaz. Sadece bunun üzerinde kafamı çizerek saatler geçirdim. Çözüm için buraya bakın: stackoverflow.com/a/19513714/505457
Tyson

848

Alternatif olarak, görünüm denetleyicisi tabanlı durum çubuğu görünümünü devre dışı bırakabilirsiniz:

  1. Set View controller-based status bar appearanceiçin NOSepetinde Info.plist.
  2. Aramak [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Not: Bu yöntem iOS9'da kullanımdan kaldırılmıştır. Kullanım preferredStatusBarStyleyerine UIViewController üzerinde. (bkz. Apple Geliştirici Kütüphanesi )


16
Bu çok daha iyi ve daha kolay bir yoldur.
Mick Byrne

227
Kodlamaya gerek yok. Hepsi plist'ten yapılabilir: (1) "Denetleyici tabanlı durum çubuğu görünümünü görüntüle" seçeneğini HAYIR olarak ve (2) "Durum çubuğu stilini" "Opak siyah tarzı" olarak ayarlayın. (Ham değerler UIViewControllerBasedStatusBarAppearance -> NO ve UIStatusBarStyle -> UIStatusBarStyleBlackOpaque)
SwiftArchitect 20:13

3
Bunun çalışması için ilgili info.plist değerini NO olarak ayarlamanız gerektiğini unutmayın .
Abhi Beckert

9
@ gothicdev: güzel yakalama. En temiz olduğu gibi cevabınızı kabul ediyorum. Bar Style için ışık seçeneği şunlar olabilir: UIStatusBarStyleLightContent
benka

9
Bu yöntem iOS 9'da kullanımdan kaldırıldı
lostAtSeaJoshua

439

Bunu herhangi bir kod satırı yazmadan yapabilirsiniz!
Durum çubuğu metin rengini tüm uygulama boyunca beyaz yapmak için aşağıdakileri yapın

Üzerinde plist proje dosyası:

  • Durum çubuğu stili: Transparent black style (alpha of 0.5)
  • Denetleyici tabanlı durum çubuğu görünümünü görüntüleme: NO
  • Durum çubuğu başlangıçta gizlidir: NO

12
İşlerin değişip değişmediğini bilmiyorum, ancak UIStatusBarStyleLightContent değeri XCode tarafından tanınmıyor ve herhangi bir belgede bulunamadı ... Çalışıyor gibi görünse de.
Nathan H

5
Bu aynı zamanda açılış ekranında değiştirdi, oysa sadece navigatöre ayarlamak ... Kudos!
viniciusnz

3
Kesinlikle bunu yapmanın en kolay yolu ve belirtildiği gibi açılış ekranında da çalışır.
7wonders

4
Denilen hiçbir şey yok UIStatusBarStyleLightContentiçinde plist infoANCAK orada olduğunu Transparent Blackeklemek gerekir, aynı hile :) artı hangi View controller-based status bar appearanceöyle başlangıçta orada değil olarak ve :) işe almak için gerekenleri tüm
user1949873

45
Benim gibi tembel insanlar için, kopyalama ve geçmişte <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
Adam Waite

241

Not: En çok oylanan cevap iOS 7/8 için çalışmaz

Info.plist'de 'Denetleyici tabanlı durum çubuğu görünümünü görüntüle' seçeneğini HAYIR olarak ayarlayın

AppDelegate'te ekleyin

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

için

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

Bu çözüm iOS 7/8 için çalışır


10
İOS 9'da kullanımdan kaldırıldı: - /
sudo make install

112

Benim için, diğer cevaplardaki (ve diğer kaynaklardan / belgelerdeki) her şeyi kullanmakla ilgili hiçbir şey olmadı. Yardım eden şey, XIB'de Gezinme Çubuğu Stilini "Siyah" olarak ayarlamaktı. Bu, herhangi bir kod olmadan metni beyaza dönüştürdü.

Resim açıklamasını buraya girin


3
Cihazda yukarıdaki cevapların hiçbiri benim için işe yaramadı ama bu. Yeni sistemle ilgili her şeyi , status_bar metninin BEYAZ olması için navigasyon_barını SİYAH olarak ayarlamanız gerektiğini söylüyor .
MrTJ

2
Birçok şeyle uğraştıktan sonra, işte sonuçlandı. Stil varsayılan olarak ayarlandı. Bunu değiştirdi ve diğer tüm durum çubuğu saldırılarını çıkardı ve işe yarıyor.
Gujamin

1
Tüm gezinme çubuklarınızı IB'de ayarlamak istemiyorsanız, görünüm proxy'sini de ayarlayabilirsiniz. [[UINavigationBar görünümü] setBarStyle: UIBarStyleBlack];
Steve Moser

3
İOS7 Storyboard'da benim için çalışmıyor. Bu başka bir şey yan etkisi olabilir gibi görünüyor?
Chris

Yukarıdaki yanıtların hiçbirinin benim için işe yaramadığını doğrulamak istiyorum. Görüntünün ardından durum çubuğu metni beyaz görünür. Ama tekrar ediyorum, Xcode 6.2 ve iOS 8.2 ile yukarıdaki YANITLAR çalışmıyor.
Markus

98

Bunların hiçbiri benim için çalışmadı, bu yüzden çalışan bir çözüm ...

Olarak Info.plist, satır eklemek:

UIViewControllerBasedStatusBarAppearanceve değeri ayarlayın NO.

Ardından AppDelegate in'e didFinishLaunchingWithOptionsşu satırları ekleyin:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];

Bu çözüm benim için çalıştı, yukarıdaki çözümler işe yaramadı.
John Contarino

Harika ama bu UIViewControllerBasedStatusBarAppearance aynı dönüştürür: Denetleyici tabanlı durum çubuğu görünümünü otomatik olarak görüntüle :)
Abhishek Thapliyal

63

Bunun için herhangi bir kod yapmanıza gerek yok

İnfo.plist dosyasına "Denetleyici tabanlı durum çubuğu görünümünü görüntüle" anahtarını aşağıdaki gibi eklemeniz gerekir: resim açıklamasını buraya girin

& değer türünü Boolean ve değer NO olarak ayarlayın. Ardından proje ayarlarına tıklayın, ardından Genel Sekmesine tıklayın ve Dağıtım Bilgisi altında tercih edilen durum çubuğu stilini .Light olarak şu şekilde ayarlayın:

resim açıklamasını buraya girin

Bu kadar.


1
Yaklaşımınızı beğendim! Benim durumumda, durum çubuğu stilini sadece tam ekran olduğunda (gezinme çubuğu olmadan) hafif hale getirmeyi anlamaya çalışıyordum. Sonra diğer tüm ekranların aynı ışık stiline uyması gerektiğini fark ettim. Yani her şey için iyi bir çözüm oluşturmaktır. Teşekkürler! (:
Igor de Lorenzi

Uygulamanız çalışırken bunu değiştirmeniz gerekmiyorsa. Bu en iyi yaklaşım.
Michael

Bu yaklaşım kesinlikle işe yarıyor, ancak iPad'de garip bir sorun getiriyor. Uygulamanızın derin bağlantıları desteklemesi ve derin bağlantı yoluyla uygulamayı başlattığınızda, durum çubuğunda görünen geri bağlantı kaybolur.
Chitranshu Asthana

En iyi ve en basit olanı.
Amit Kumar

benim için en iyi çözüm: D
Gold Chicken

48

Aşağıdaki gibi sadece iki adım:

Aşama 1:

project target, Satır Ekle'nin Bilgi sekmesi altında :

UIViewControllerBasedStatusBarAppearance, değeri ayarlayın NO.

Adım 2:

Projede AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{[application setStatusBarStyle:UIStatusBarStyleLightContent];}

4
Ben bu uygulamayı ilk kez "uygulama" param kullanıyorum) seviyorum
MUH Mobile Inc.

Nokta gösterimi ve mükemmel olurdu;)
Rivera

43

Bu, 18 Eylül 2013'te yayınlanan Golden Master iOS 7 ve Xcode 5 GM tohumunda ve iOS7 SDK'da çalışır (en azından navigasyon denetleyicisi gizli):

  1. Set the UIViewControllerBasedStatusBarAppearanceiçin NOde Info.plist.

  2. Gelen ViewDidLoadyöntemle veya herhangi bir yere, nereye değişim durum çubuğu tarzı istiyoruz: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


1
UIViewControllerBasedStatusBarAppearance varsayılan değerleri EVET gibi görünüyor. "Uygulamalar varsayılan olarak yeni görünüm denetleyicisi tabanlı durum çubuğu yönetim sistemini kullanıyor. Bunu devre dışı bırakmak için Info.plist'inize UIViewControllerBasedStatusBarAppearance anahtarı için bir NO değeri ekleyin." [ bgr.com/2013/09/10/ios-7-gm-change-log-release-notes/]
Zsolt

1
UIViewControllerBasedStatusBarAppearance öğesini NO olarak ayarladıktan sonra, durum çubuğu görünümlerde gizlenir.
CashLee 李秉骏

tüm viewdidload'a uygulanmalı mıdır?
Arnlee Vizcayno

Sadece appDelegates didFinishLoading yönteminde ekleyebilirsiniz. Veya ilk görünümlerde değiştirilmesini istemiyorsanız viewDidLoad yöntemini kullanın.
Deniss Fedotovs

1
fantastik, bu işi yaptı. basit ve harika kodlama.
Felipe

32

UIViewController cihazınızın bir UINavigationController içinde olması durumunda BarStyle'ı ayarlamanız gerekir:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

Orijinal Yanıt burada

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


Hayır, bu sadece gezinme çubuğu rengini durum çubuğu metin rengiyle aynı yapar. Bu sorunu gizler, düzeltmez!
wpearse

2
İOS7'de, görünüm bir UINavigationController içeriyorsa durum çubuğu UINavigationBar'ı taklit eder, bu nedenle çoğu durumda bu doğru cevaptır.
Ocak'ta jonstaff

29

Arayüz Oluşturucu aracılığıyla oluşturulmuş bir yerleşik gezinme denetleyiciniz varsa , gezinti denetleyicinizi yöneten bir sınıfta aşağıdakileri ayarladığınızdan emin olun:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

Tüm ihtiyacınız olan bu olmalı.


Bu, storyboard'suz ve xib'siz bir uygulamada benim için çalışan tek çözümdü. IB olmayan kullanıcılar için de yararlı olmalıdır.
Johnny Sparks

2
Her görünüm denetleyicisinde stili farklı bir şekilde ayarlamamız gerektiğinde bu benim için mükemmeldi
Ben

"Denetleyici tabanlı durum çubuğu görünümünü görüntüle" seçeneğini evet olarak ayarlamak istiyorsanız, işte bu yol. Teşekkürler!
cloudsurfin

28

Bir iOS 7 uygulaması için Swift projesinde Xcode 6 beta 5 kullanıyorum .

İşte yaptım ve işe yarıyor:

Info.plist:

Resim açıklamasını buraya girin


2
Teşekkürler, IOS7'nin en son sürümüyle çalışan çözümünüze benziyor
Dekel Maman

Bu çözüm, uygulamayı yüklerken açılış ekranında durum çubuğunu gösterir.
Juan Boero

Sorunlarımı xCode 7.1'de çözdüm. En son sürüm. Apple, bir şeyin işe yaraması için birkaç önemli parçayı unuttu. Tekrar.
Michael

22

AppDelegate.m'de aşağıdakileri ekleyin.

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

Ve Plist dosyasında, 'Denetleyici tabanlı durum çubuğu görünümünü görüntüle' seçeneğini HAYIR olarak ayarlayın.


20

Sadece Appdelegate'te

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

5
Benim için gerçekten işe yarayan tek cevap.
Wim Haanstra

6
Ancak bunun için Denetleyici tabanlı durum çubuğu görünümünü görüntüle seçeneğini devre dışı bırakmamız gerekir .
iamyogish

İOS9'da kullanımdan kaldırıldı
Dimitris

20

Bu gerçekten benim için çok kolay.

Uygulamanızın adresine gidin info.plist.

  1. Set View controller-based status bar appearanceiçinNO
  2. Set Status bar styleiçinUIStatusBarStyleLightContent

Ardından uygulamanızın temsilcisine gidin ve pencerelerinizin RootViewController'ını ayarladığınız aşağıdaki kodu yapıştırın.

#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. Benim için çalışıyor.


1
Bu doğru cevap (plist parçası) olduğunu düşünüyorum ... neden didfinishlaunchingwithoptions statik kod eklemek istiyorum ... Tüm uygulama için aynı renk gerekiyorsa bu doğru yol
user2387149

20
  1. Git Project-> Target,

  2. Sonra set Status Bar Styleiçin Light. Durum çubuğunu başlatma ekranından beyaz yapar. Proje Ayarı

  3. Sonra set View controller-based status bar appearanceeşittir NOiçinde Info.plist.


2
Eğer gerçek set ikinci bölümü View controller-based status bar appearance equalTo NOben eksikti parçaydı. Teşekkür
Will

18

Bilgi PLIST değişikliği Swift 3'te sadece 2 adımla çok kolaydır. İnfo.plist adresine gidin ve anahtarı View controller-based status bar appearance"NO" olarak değiştirin. Sonra Appdelegate'te bu satırı didfinishlaunchingwithoptions yöntemine ekleyin

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

bu iOS9'da kullanımdan kaldırıldı, artık rootviewcontroller'da bu özelliği geçersiz kılmalısınız

Bunu yapmak iOS 9'da kullanımdan kaldırılmıştır, bunu rootviewcontroller'da yapmalısınız

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }

1
Sadece harika kardeşim :) Teşekkürler.
Naresh Reddy M

UIStatusBarStyle {return .lightContent}: Bu rootviewcontroller geçersiz kılma var preferredStatusBarStyle bu yapmalıyım iOS 9 önerilmemektedir olmuştur yapıyor
James Rochabrun

17

iOS 7, Apple geliştirici belgelerinde açıklandığı gibi, bireysel görünüm denetleyicilerinin durum çubuğunun görünümünü belirlemesine izin verir:

iOS 7, görünüm denetleyicilerine uygulama çalışırken durum çubuğunun stilini ayarlama olanağı verir. Durum çubuğu stilini dinamik olarak değiştirmenin iyi bir yolu preferredStatusBarStyle, durum çubuğu görünümünü ve çağrısını uygulamak ve - bir animasyon bloğu içinde - güncellemektir setNeedsStatusBarAppearanceUpdate.

Durum çubuğu görünümünü global olarak ayarlamak iki adımlı bir işlemdir.

İlk olarak, iOS'a durum çubuğu görünümünü görünüm bazında ayarlamak istemediğinizi söylemeniz gerekir.

O zaman sorumluluk almanız ve yeni küresel durum çubuğu stilini ayarlamanız gerekir.

Görüntüleme başına durum çubuğu denetimini devre dışı bırakmak için View controller-based status bar appearanceözelliği ayarlamanız gerekir Info.plist.

Proje Gezgini'ni açın ve iOS uygulamanız için projeyi seçin, ardından Bilgi sekmesini seçin.

Farenizi bir satırın üzerine getirin, ardından yeni bir özellik eklemek için görünen artı işaretini tıklayın .plist.

View controller-based status bar appearanceAnahtar alanına girin , ardından Tür alanının olarak ayarlandığından emin olun Boolean. Son olarak, NODeğer alanına girin .

Durum çubuğu için genel bir stil ayarlamak için, Bilgi sekmesinin altına, Status bar styleTür Stringve Değer tuşlarıyla başka bir özellik ekleyin Opaque black style.

İşte biraz daha ayrıntılı ve bazı örnek kod içeren bir blog yazısı:

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


Teşekkürler. Benim sorunum "Görünüm denetleyicisi tabanlı durum çubuğu görünümü" türünü dize olarak ayarlanmış görmedim oldu. .Plist dosyasını "elle" düzenlemek ve boole değerini koymak işleri temizledi.
Chris Prince

12

Biraz ekstra yapmaya gerek yok, sadece bu kodu viewController'a yaz ve durum çubuğu rengini beyaz al

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}

Uygulamadan sonra bunu ViewController.m altına koyun. Onun en kolay ve harika çalışıyor! Teşekkürler Mohit!
Phil Mulkins

12

Xcode GM Seed için yanıt güncellendi:

  1. In Info.plistput View controller-based status bar appearanceolarakNO

  2. Projede şunları ayarlayın:

    Resim açıklamasını buraya girin

  3. ViewDidLoad'da:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


Bu durum benim için durum çubuğunu değil, sekme çubuğunu değiştirdi.
Keith

11

Bence tüm cevaplar gerçekten soruna işaret etmiyor çünkü hepsi belirli senaryolarda çalışıyor. Ancak tüm davaları kapsamanız gerekiyorsa aşağıdaki noktaları takip edin:

Durum çubuğu ışık stiline ihtiyacınız olan yere bağlı olarak her zaman şu 3 noktayı aklınızda bulundurmalısınız:

1) Başlatma ekranında veya kontrol edemediğiniz başka yerlerde durum çubuğuna ihtiyacınız varsa (görünüm denetleyicilerinde değil, Başlat Ekranı gibi bazı sistem kontrollü öğeler / anlarda) Proje ayarlarınıza gidersiniz Proje ayarları

2) bir gezinme denetleyicisinin içinde bir denetleyiciniz varsa, arabirim oluşturucuda aşağıdaki gibi değiştirebilirsiniz:

a) Gezinme denetleyicinizin gezinme çubuğunu seçin Gezinti denetleyicinizin gezinme çubuğunu seçin

b) Ardından gezinme çubuğunun stilini "Siyah" olarak ayarlayın, çünkü bu durum durum çubuğunuzun altında "siyah" -> koyu bir arka planınız olacağı için durum çubuğunu beyaza ayarlayacaktır

resim açıklamasını buraya girin

Veya kodu aşağıdaki gibi yapın

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Yalnızca kendi durum çubuğu stiline sahip olması gereken denetleyiciniz varsa ve bazı konteyner yapısına UINavigationController olarak gömülü değilse

Denetleyicinin kodundaki durum çubuğu stilini ayarlayın:

Kodda durum çubuğu stilini ayarlama


Lütfen davanızı açıklayın ve yardım etmeye çalışacağım
Fawkes

1
Pliste StatusBarIsIntiallyHidden = NO ve pliste ViewControllerBasedApplicationStatusBarAppearnce = NO eklemek zorunda kaldım. Sonra bu
Michael

İlk yükleme görünümü denetleyicisiyle aynı "görüntüye" sahip bir açılış ekranınız var mı? Ayrıca, hedefinizin "Bilgi" bölümünde "Durum çubuğunu gizle" yi yanlış olarak ayarlamayı deneyebilir ve .plist ile uğraşmaktan kaçınabilirsiniz. "StatusBarIsIntiallyHidden" bayrağı
Fawkes

Ben değillim. Oluşturulan varsayılan xib kullanıyor.
Michael

Aslında xCode 7.1'de yeni bir proje oluştururken bu sorunu buldum, bu yüzden çok garip olduğunu düşündüm
Michael

10

Sadece aramak

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

içinde

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

AppDelegateiOS7'de benim için harika çalışıyor.


Vay be, burada çok saçmalık ama bu cevap benim için çalıştı. Xcode 6 ve iOS 8 SDK kullanıyorum
Ethan Parker

1
Mükemmel, iOS 9'da benim için çalışıyorView controller-based status bar appearance = NO
dstudeba

9

Bu, doğrudan erişmek için bir Apple geliştirici kimliğine ihtiyacınız olan iOS 7 UI Geçiş Kılavuzu'nda belgelenmiştir . İlgili alıntı:

Durum çubuğu saydam olduğu için arkasındaki görünüm gösterilir. [...] UIStatusBarStyleDurum çubuğu içeriğinin koyu veya açık olacağını belirtmek için bir sabit kullanın :

UIStatusBarStyleDefaultkaranlık içerik gösterir. [...]

UIStatusBarStyleLightContenthafif içerik görüntüler. Karanlık içerik durum çubuğunun arkasındaysa kullanın.

Ayrıca ilginizi çekebilir:

İOS 7'de, durum çubuğunun stilini tek bir vew denetleyicisinden kontrol edebilir ve uygulama çalışırken değiştirebilirsiniz. Bu davranışı etkinleştirmek için, UIViewControllerBasedStatusBarAppearanceanahtarı bir uygulamanın Info.plistdosyasına ekleyin ve ona değer verin YES.

Kesinlikle Apple geliştirici kimliğinizle erişebileceğiniz belgeye göz atmanızı tavsiye ederim.


3
Zaten denedim [uygulama setStatusBarStyle: UIStatusBarStyleLightContent]; ama aslında hiçbir şey değişmiyor, metin rengi hala siyah
Oleksandr Veremchuk

Daha fazla yardım almak isterim, ancak dediğim gibi, iOS geliştirme sürecine ne önereceğimi bilecek kadar aşina değilim. Afedersiniz!
Aaron Miller

1) plist içinde UIViewControllerBasedStatusBarAppearance öğesini YES olarak ayarlayın 2) viewDidLoad içinde bir [self setNeedsStatusBarAppearanceUpdate] yapın; 3) aşağıdaki yöntemi ekleyin :-( UIStatusBarStyle) preferStatusBarStyle {return UIStatusBarStyleLightContent; }
Peter B. Kramer

9

İşte Apple Kuralları / Talimat durum çubuğu değişiklik hakkında. Durum çubuğunda yalnızca Koyu ve açık renklere (siyah ve siyah) izin verilir.

İşte - Durum çubuğu stilini değiştirme:

Eğer set durum çubuğu tarzı istiyorsanız, uygulama düzeyinde daha sonra ayarlamak UIViewControllerBasedStatusBarAppearanceiçin NOsizin `.plist' dosyasında.

durum çubuğu stilini ayarlamak istiyorsanız, görünüm denetleyicisi düzeyinde şu adımları izleyin:

  1. Set UIViewControllerBasedStatusBarAppearanceiçin YESde .plistsize UIViewController düzeyinde sadece set durum çubuğu tarzı gerekiyorsa, dosyaya.
  2. ViewDidLoad ekleme işlevinde - setNeedsStatusBarAppearanceUpdate

  3. görünüm denetleyicinizde preferStatusBarStyle'ı geçersiz kıl.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Durum çubuğu stili kurulum düzeyine göre .plist değerini ayarlayın. resim açıklamasını buraya girin


Uygulama başlatma sırasında veya görünüm denetleyicinizin viewDidLoad sırasında durum çubuğu için arka plan rengini değiştirmek / ayarlamak için bazı hileler.

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
    }

}



İşte sonuç:

resim açıklamasını buraya girin


8

Bazı şeyleri farklı yaptım ve bu benim için işe yarıyor.

Kodda değişiklik olmadan .plist dosyamı şu şekilde yapılandırdım:

  • Denetleyici tabanlı durum çubuğu görünümünü görüntüle> HAYIR
  • Durum çubuğu stili> UIStatusBarStyleLightContent (basit dize)

Umut ediyorum bu yardım eder.

Düzenle

Her görünüm denetleyicisi için, film şeridindeki "durum çubuğunun" Simüle Edilmiş Metrikleri özelliğini "çıkarılan" konumdan "Hafif İçerik" olarak değiştiririm


8

Swift ile aynı sonucu istiyorsanız, AppDelegate.swift dosyanızda bu kodu kullanabilirsiniz:

UINavigationBar.appearance().barStyle = .BlackTranslucent

Ve durum çubuğunuzun metni beyaz olacak :-)!


8

Yine de View controller-based status bar appearance, her bir görünüm denetleyicisinin durum çubuğunu değiştirebileceğiniz anlamına gelen, YES olarak ayarlanmış info.plist içinde kullanmak istiyorsanız, ViewDidLoad'daki durum çubuğunda beyaz metin için aşağıdakini kullanın:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];

Gezinme çubuğu! = Durum çubuğu.
Michael Peterson

... Onu denedin mi!? (Ve evet, durum çubuğu için)
eirik

7

Liste'ye şunu ekleyin:

  • Durum çubuğu stili: UIStatusBarStyleLightContent
  • Denetleyici tabanlı durum çubuğu görünümünü görüntüleme: NO

7

Info.plist sette alan değeri YOK Görünüm denetketiyicili durum çubuğu görünümü ve set statusbar hedef tarzı ışık> genel ayarı.


2
kazanan kazanan tavuk yemeği
tommybananas

7

Sorunuza tam bir cevap vereyim. Durum çubuğu metin rengini değiştirmek çok kolaydır, ancak iOS 7'de yeni başlayanlar için biraz kafa karıştırıcıdır.

Görünüm denetleyicisini seçip sağ taraftaki Simüle Metriklere giderek Storyboard'da rengi siyahtan beyaza değiştirmeye çalışıyorsanız, işe yaramaz ve nedenini bilmiyorum. Bu şekilde değiştirerek çalışmalı ama her nasılsa.

İkincisi, UIViewControllerBasedStatusBarAppearance özelliğini plistinizde bulamazsınız, ancak varsayılan olarak orada değildir. + Düğmesine tıklayarak kendiniz eklemeniz ve ardından HAYIR olarak ayarlamanız gerekir.

ios 7 durum çubuğu metin rengi

Son olarak, AppDelegate.m dosyanıza gidip aşağıdakileri didFinishLaunchingWithOptions yöntemine eklemeniz ve aşağıdaki satırı eklemeniz gerekir:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Bu, tüm görünüm denetleyicileriniz için rengi beyaza dönüştürür. Bu yardımcı olur umarım!


Bu yöntem iOS 9'da kullanımdan kaldırıldı
Trung Bui
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.