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?
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?
Yanıtlar:
Set UIViewControllerBasedStatusBarAppearance
için YES
.plist dosyasında.
In viewDidLoad
do a[self setNeedsStatusBarAppearanceUpdate];
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())
Alternatif olarak, görünüm denetleyicisi tabanlı durum çubuğu görünümünü devre dışı bırakabilirsiniz:
View controller-based status bar appearance
için NO
Sepetinde Info.plist
.[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Not: Bu yöntem iOS9'da kullanımdan kaldırılmıştır. Kullanım preferredStatusBarStyle
yerine UIViewController üzerinde. (bkz. Apple Geliştirici Kütüphanesi )
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ı:
Transparent black style (alpha of 0.5)
NO
NO
UIStatusBarStyleLightContent
içinde plist info
ANCAK orada olduğunu Transparent Black
eklemek 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
<key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
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
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ü.
Bunların hiçbiri benim için çalışmadı, bu yüzden çalışan bir çözüm ...
Olarak Info.plist
, satır eklemek:
UIViewControllerBasedStatusBarAppearance
ve değeri ayarlayın NO
.
Ardından AppDelegate in'e didFinishLaunchingWithOptions
şu satırları ekleyin:
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
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:
& 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:
Bu kadar.
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];
…
}
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):
Set the UIViewControllerBasedStatusBarAppearance
için NO
de
Info.plist
.
Gelen ViewDidLoad
yöntemle veya herhangi bir yere, nereye değişim durum çubuğu tarzı istiyoruz:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
UIViewController cihazınızın bir UINavigationController içinde olması durumunda BarStyle'ı ayarlamanız gerekir:
-[UINavigationBar setBarStyle:UIBarStyleBlack]
Orijinal Yanıt burada
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ı.
Bir iOS 7 uygulaması için Swift projesinde Xcode 6 beta 5 kullanıyorum .
İşte yaptım ve işe yarıyor:
Info.plist:
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.
Sadece Appdelegate'te
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Bu gerçekten benim için çok kolay.
Uygulamanızın adresine gidin info.plist
.
View controller-based status bar appearance
içinNO
Status bar style
iç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.
View controller-based status bar appearance equal
To NO
ben eksikti parçaydı. Teşekkür
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
}
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üncellemektirsetNeedsStatusBarAppearanceUpdate
.
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 appearance
Anahtar alanına girin , ardından Tür alanının olarak ayarlandığından emin olun Boolean
. Son olarak, NO
Değer alanına girin .
Durum çubuğu için genel bir stil ayarlamak için, Bilgi sekmesinin altına, Status bar style
Tür String
ve 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/
Biraz ekstra yapmaya gerek yok, sadece bu kodu viewController'a yaz ve durum çubuğu rengini beyaz al
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
Xcode GM Seed için yanıt güncellendi:
In Info.plist
put View controller-based status bar appearance
olarakNO
Projede şunları ayarlayın:
ViewDidLoad'da:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
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
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
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
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:
Sadece aramak
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
içinde
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
AppDelegate
iOS7'de benim için harika çalışıyor.
View controller-based status bar appearance = NO
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. [...]
UIStatusBarStyle
Durum çubuğu içeriğinin koyu veya açık olacağını belirtmek için bir sabit kullanın :
UIStatusBarStyleDefault
karanlık içerik gösterir. [...]
UIStatusBarStyleLightContent
hafif 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,
UIViewControllerBasedStatusBarAppearance
anahtarı bir uygulamanınInfo.plist
dosyasına ekleyin ve ona değer verinYES
.
Kesinlikle Apple geliştirici kimliğinizle erişebileceğiniz belgeye göz atmanızı tavsiye ederim.
İş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 UIViewControllerBasedStatusBarAppearance
için NO
sizin `.plist' dosyasında.
durum çubuğu stilini ayarlamak istiyorsanız, görünüm denetleyicisi düzeyinde şu adımları izleyin:
UIViewControllerBasedStatusBarAppearance
için YES
de .plist
size UIViewController düzeyinde sadece set durum çubuğu tarzı gerekiyorsa, dosyaya.ViewDidLoad ekleme işlevinde - setNeedsStatusBarAppearanceUpdate
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.
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ç:
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:
Umut ediyorum bu yardım eder.
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
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];
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ı.
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!