İOS 7'de durum çubuğu arka plan rengi ve metin rengi nasıl değiştirilir?


89

Mevcut uygulamam iOS 5 ve 6'da çalışıyor.

Gezinme çubuğu turuncu renge sahip ve durum çubuğu beyaz metin rengiyle siyah bir arka plan rengine sahip. Bununla birlikte, iOS 7'de aynı uygulamayı çalıştırdığımda, durum çubuğunun, gezinme çubuğuyla aynı turuncu arka plan rengiyle şeffaf göründüğünü ve durum çubuğu metin renginin siyah olduğunu gözlemliyorum.

Bu nedenle, durum çubuğu ile gezinme çubuğu arasında ayrım yapamıyorum.

Durum çubuğunun siyah arka plan rengi ve beyaz metin rengi olan iOS 5 ve 6'daki ile aynı görünmesini nasıl sağlayabilirim? Bunu programlı olarak nasıl yapabilirim?


bu bağlantıyla yardım alabilirsiniz: stackoverflow.com/questions/18901753/…
Utkarsh Goel

Yanıtlar:


174

Uyarı: Artık iOS 13 ve Xcode 11 ile çalışmıyor.

================================================ ======================

Başka yollar aramalıydım. addSubviewPencerede yer almayan . Çünkü klavye sunulduğunda pencerede yukarı çıkıyorum.

Amaç-C

- (void)setStatusBarBackgroundColor:(UIColor *)color {

    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
        statusBar.backgroundColor = color;
    }
}

Swift

func setStatusBarBackgroundColor(color: UIColor) {

    guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
        return
    }

    statusBar.backgroundColor = color
}

Hızlı 3

func setStatusBarBackgroundColor(color: UIColor) {

    guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }

    statusBar.backgroundColor = color
}

Bu formu aramak application:didFinishLaunchingWithOptionsbenim için çalıştı.

NB Uygulama mağazasında bu mantıkla bir uygulamamız var. Sanırım uygulama mağazası politikasında sorun yok.


Düzenle:

Kendi sorumluluğunuzdadır kullanın. Yorumcu oluşturun @Sebyddd

Bir uygulama bu nedenle reddedildi, diğeri ise gayet iyi kabul edildi. Özel API kullanımını düşünüyorlar, bu yüzden inceleme sürecinde şansa maruz kalıyorsunuz :) - Sebyddd


5
Kabul edilen çözümün aksine bu, yönünüzü değiştirdiğinizde de işe yarar. Teşekkürler!
Michael

5
Bu özel API kullanımı değil mi?
Foriger

2
Bir uygulama bu nedenle reddedildi, diğeri ise gayet iyi kabul edildi. Özel API kullanımını düşünüyorlar, bu yüzden inceleme sürecinde şansa maruz
kalıyorsunuz

3
Bu çözümle ilgili bir sorun var, ana sayfa düğmesine iki kez bastığınızda, bu durum çubuğu rengi kaybolacaktır.
Zamansız

3
İOS 13'te çalışmaz. UIApplication'da -statusBar veya -statusBarWindow adlı uygulama: artık bir durum çubuğu veya durum çubuğu penceresi olmadığından bu kod değiştirilmelidir . Bunun yerine pencere sahnesinde statusBarManager nesnesini kullanın.
NSDeveloper

109

Uygulamanızı Goto info.plist

1) Set View controller-based status bar appearanceiçin NO
2) Set Status bar styleiçin UIStatusBarStyleLightContent

Ardından ve uygulama temsilcinize Goto size Windows'un RootViewController set 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,[UIScreen mainScreen].bounds.size.width, 20)];
    view.backgroundColor=[UIColor blackColor];
    [self.window.rootViewController.view addSubview:view];
}

Umarım yardımcı olur.


Sadece bahsetmek gerekirse, apple dokümanları bunun yerine kontrol ederseniz şunu önerir: if (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_6_1) {} else {} alkışlar!
Joel Balmer

2
@learner info.plist'e gidin ve ardından herhangi bir satırı seçin. Bir + işareti göreceksiniz. Artı işaretine tıklayın ve açılır menüden Status bar styleSeçenek'i görmelisiniz . Onu seçin. Ve UIStatusBarStyleLightContentdeğeri olarak yapıştırın .
Shahid Iqbal

5
Bu rotasyonu hesaba
katmaz

4
UIScreen genişliğini kullanmak daha iyidir:UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 20)];
KlimczakM

2
Çerçeveyi ayarlamanın daha kısa ve öz bir yolu kullanıyorUIApplication.sharedApplication().statusBarFrame
Doug

28

İOS 7'de durum çubuğunun arka plan rengini işlerken 2 durum vardır

Durum 1: Gezinme Çubuğu ile Görüntüle

Bu durumda, viewDidLoad yönteminizde aşağıdaki kodu kullanın

 UIApplication *app = [UIApplication sharedApplication];
 CGFloat statusBarHeight = app.statusBarFrame.size.height;

 UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
 statusBarView.backgroundColor = [UIColor yellowColor];
 [self.navigationController.navigationBar addSubview:statusBarView];

Durum 2: Gezinme Çubuğu Olmadan Görüntüle

Bu durumda, viewDidLoad yönteminizde aşağıdaki kodu kullanın

 UIApplication *app = [UIApplication sharedApplication];
 CGFloat statusBarHeight = app.statusBarFrame.size.height;

 UIView *statusBarView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
 statusBarView.backgroundColor  =  [UIColor yellowColor];
 [self.view addSubview:statusBarView];

Kaynak bağlantı http://code-ios.blogspot.in/2014/08/how-to-change-background-color-of.html


Bu benim için iyi çalıştı, ancak durum çubuğu 20 pt yüksek olmalı: [[UIView tahsis] initWithFrame: CGRectMake (0, -20, 320, 20)];
LordParsley

27

1) plist'te UIViewControllerBasedStatusBarAppearance'ı YES olarak ayarlayın

2) viewDidLoad'da [self setNeedsStatusBarAppearanceUpdate];

3) aşağıdaki yöntemi ekleyin:

 -(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
 } 

GÜNCELLEME: geliştiriciler için ios-7 durum çubuğu kılavuzunu
da kontrol edin


siyah veya beyaz olarak değiştirebilirsiniz
Muruganandham K

1
Bunun bir etkisi yoktur (ios7, simülatör). "PreferStatusBarStyle" hiçbir zaman çağrılmaz.
Adam

1
xib kullanıyor musun? EVET ise simüle edilen metrikler özelliğindeki durum çubuğu değerini değiştirir
Muruganandham K

3
Ah, sorunu buldum. Apple'ın UINavigationController bildirimi alır - yani cevabınız yalnızca görünüm denetleyicisi en üst denetleyici olduğunda, kapsayıcı yoktur (sekme çubuğu, gezinme çubuğu vb.).
Adam

3
Storyboard + NavigationController kullanılırken özel durum. Yukarıdaki 1 numarayı yapın. Ardından, UINavigationController için bir alt sınıf oluşturun (buna myNavController deyin). Storyboard'da, NavigationController sınıfını "myNavController" olarak ayarlayın. MyNavController.m'de, yukarıda # 2 & # 3'ü yapın. 3 numaralı yöntem artık alt sınıfınızda çağrılacaktır (gözlemlemek için bir günlük veya kesme noktası ayarlayın).
ObjectiveTC

16

Uygulama başlatılırken veya görünüm denetleyicinizin viewDidLoad'u sırasında durum çubuğu için arka plan rengini ayarlayabilirsiniz.

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ç:

görüntü açıklamasını buraya girin


Durum çubuğu değişikliği ile ilgili Apple Yönergeleri / Talimatları burada . Durum çubuğunda yalnızca Koyu ve açık (siyah ve siyah) izin verilir.

İşte - Durum çubuğu stili nasıl değiştirilir:

Durum çubuğu stilini, uygulama seviyesini ayarlamak istiyorsanız, ardından UIViewControllerBasedStatusBarAppearance için NOsizin `.plist' dosyasında.

Denetleyici düzeyinde durum çubuğu stilini ayarlamak isterseniz şu adımları izleyin:

  1. Set UIViewControllerBasedStatusBarAppearanceiçin YESde.plist size UIViewController düzeyinde sadece set durum çubuğu tarzı gerekiyorsa, dosyaya.
  2. ViewDidLoad add fonksiyonunda - setNeedsStatusBarAppearanceUpdate

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

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Bunları kullanırsak uygulama reddedilecek mi? StatusBarView renginin bu şekilde değiştirilmesine izin veriliyor mu?
abhimuralidharan

@ abhi1992 Apple'ın kabul edip etmeyeceğini söyleyemem çünkü bu çözümü App Store'da göndermesi gerekmeyen kurumsal uygulamamda uyguladım. :)
Krunal

Bunu sekme tabanlı bir uygulamada bir viewcontroller'ın viewdidload'una koyarsam, her viewController için rengi ayarlar, sadece kodu koyduğum yer değil (bu normal mi?)

14

İOS 7'de durum çubuğunun bir arka planı yoktur, bu nedenle arkasına 20 piksel yüksekliğinde siyah bir görüntü koyarsanız, iOS 6 ile aynı sonucu elde edersiniz.

Ayrıca konu hakkında daha fazla bilgi için iOS 7 UI Geçiş Kılavuzu'nu okumak isteyebilirsiniz .


2
Gabriele, arkasına 20 piksel yüksekliğindeki görüntüyü nasıl koyacağın kodunu yazabilir misin lütfen?
Dejell

Dejel, bu Shahid'in cevabında.
Şişko

Sadece "20" kullanmayın! Değeri doğru bir şekilde alabilirsiniz, aşağıdaki uzun cevabıma bakın.
Şişko

8

Bunu ViewDidLoad Yönteminize yazın:

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
    self.edgesForExtendedLayout=UIRectEdgeNone;
    self.extendedLayoutIncludesOpaqueBars=NO;
    self.automaticallyAdjustsScrollViewInsets=NO;
}

Benim için durum çubuğu rengini ve diğer kullanıcı arabirimi yanlış yerleştirmelerini de bir ölçüde düzeltti.


7

İşte bir toplam, kopyala ve yapıştır çözümü

kesinlikle doğru açıklama

ilgili her sorunun.

Warif Akhand Rishi'ye teşekkürler !

keyPath ile ilgili harika keşifler için statusBarWindow.statusBar. İyi bir.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
    // handle the iOS bar!
    
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    // "Status Bar Style" refers to the >>>>>color of the TEXT<<<<<< of the Apple status bar,
    // it does NOT refer to the background color of the bar. This causes a lot of confusion.
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    
    // our app is white, so we want the Apple bar to be white (with, obviously, black writing)
    
    // make the ultimate window of OUR app actually start only BELOW Apple's bar....
    // so, in storyboard, never think about the issue. design to the full height in storyboard.
    let h = UIApplication.shared.statusBarFrame.size.height
    let f = self.window?.frame
    self.window?.frame = CGRect(x: 0, y: h, width: f!.size.width, height: f!.size.height - h)
    
    // next, in your plist be sure to have this: you almost always want this anyway:
    // <key>UIViewControllerBasedStatusBarAppearance</key>
    // <false/>
    
    // next - very simply in the app Target, select "Status Bar Style" to Default.
    // Do nothing in the plist regarding "Status Bar Style" - in modern Xcode, setting
    // the "Status Bar Style" toggle simply sets the plist for you.
    
    // finally, method A:
    // set the bg of the Apple bar to white.  Technique courtesy Warif Akhand Rishi.
    // note: self.window?.clipsToBounds = true-or-false, makes no difference in method A.
    if let sb = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView {
        sb.backgroundColor = UIColor.white
        // if you prefer a light gray under there...
        //sb.backgroundColor = UIColor(hue: 0, saturation: 0, brightness: 0.9, alpha: 1)
    }
    
    /*
    // if you prefer or if necessary, method B:
    // explicitly actually add a background, in our app, to sit behind the apple bar....
    self.window?.clipsToBounds = false // MUST be false if you use this approach
    let whiteness = UIView()
    whiteness.frame = CGRect(x: 0, y: -h, width: f!.size.width, height: h)
    whiteness.backgroundColor = UIColor.green
    self.window!.addSubview(whiteness)
    */
    
    return true
}

6

Sadece Shahid'in cevabına eklemek için - bunu kullanarak yön değişikliklerini veya farklı cihazları hesaba katabilirsiniz (iOS7 +):

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

  //Create the background
  UIView* statusBg = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.window.frame.size.width, 20)];
  statusBg.backgroundColor = [UIColor colorWithWhite:1 alpha:.7];

  //Add the view behind the status bar
  [self.window.rootViewController.view addSubview:statusBg];

  //set the constraints to auto-resize
  statusBg.translatesAutoresizingMaskIntoConstraints = NO;
  [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]];
  [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0.0]];
  [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeRight multiplier:1.0 constant:0.0]];
  [statusBg.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[statusBg(==20)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(statusBg)]];
  [statusBg.superview setNeedsUpdateConstraints];
  ...
}

Evet, ekran boyutlarını ve yönlerini ele almak daha da iyidir. Ayrıca bu kodun çevresine şuna benzer bir şey ekleyin: if (NSFoundationVersionNumber> NSFoundationVersionNumber_iOS_6_1)
Benjamin Piette

6

arka plan için, örneğin aşağıdaki gibi kolayca bir görünüm ekleyebilirsiniz:

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:0.1];
[navbar addSubview:view];

burada "navbar" bir UINavigationBar'dır.


4
İlk iki satırınız doğrudur .. Ama Son Satır [navigationController.view addSubview: view] olmalıdır; Durum çubuğunun üst üste gelmeyen 20 piksel durum çubuğundan sonra görünümü ekleyeceğinden, UINavigationController görünümüne değil UINavigationBar görünümüne eklenmelidir.
Shahid Iqbal

Swift'de şunu kullanın: rect = CGRect (x: 0, y: 0, genişlik: UIScreen.main.bounds.width, height: UIApplication.shared.statusBarFrame.height) let bar = UIView (frame: rect) bar.backgroundColor = UIColor.white navigationController? .View.addSubview (bar)
JVS

5

Swift 4:

// Durum çubuğu arka plan rengini değiştir

let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView

statusBar?.backgroundColor = UIColor.red

4

Durum çubuğunun arka plan rengini değiştirin: Swift:

let proxyViewForStatusBar : UIView = UIView(frame: CGRectMake(0, 0,self.view.frame.size.width, 20))    
        proxyViewForStatusBar.backgroundColor=UIColor.whiteColor()
        self.view.addSubview(proxyViewForStatusBar)

1

İOS 9'da hızlı 2.0 olması durumunda

Aşağıdakileri uygulama temsilcisine didFinishLaunchingWithOptions altına yerleştirin:

    let view: UIView = UIView.init(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, 20))

    view.backgroundColor = UIColor.blackColor()  //The colour you want to set

    view.alpha = 0.1   //This and the line above is set like this just if you want 
                          the status bar a darker shade of 
                          the colour you already have behind it.

    self.window!.rootViewController!.view.addSubview(view)

Bu işe yarıyor, ancak bu tarzın üstesinden gelmenin en iyi yolu olduğunu sanmıyorum
Michael

1

iTroid23 çözümü benim için çalıştı. Swift çözümünü kaçırdım. Yani belki bu yardımcı olabilir:

1) Plistime şunu eklemek zorunda kaldım:

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

2) "setNeedsStatusBarAppearanceUpdate" i çağırmam gerekmedi.

3) Hızlı bir şekilde bunu UIViewController'ıma eklemek zorunda kaldım:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

"UIViewControllerBasedStatusBarAppearance" anahtarı için teşekkürler, bana yardımcı oldu :)
LightNight

1

Bir kullanıyorsanız UINavigationController, bunun gibi bir uzantı kullanabilirsiniz:

extension UINavigationController {
    private struct AssociatedKeys {
        static var navigationBarBackgroundViewName = "NavigationBarBackground"
    }

    var navigationBarBackgroundView: UIView? {
        get {
            return objc_getAssociatedObject(self,
                                        &AssociatedKeys.navigationBarBackgroundViewName) as? UIView
        }
        set(newValue) {
             objc_setAssociatedObject(self,
                                 &AssociatedKeys.navigationBarBackgroundViewName,
                                 newValue,
                                 .OBJC_ASSOCIATION_RETAIN)
        }
    }

    func setNavigationBar(hidden isHidden: Bool, animated: Bool = false) {
       if animated {
           UIView.animate(withDuration: 0.3) {
               self.navigationBarBackgroundView?.isHidden = isHidden
           }
       } else {
           navigationBarBackgroundView?.isHidden = isHidden
       }
    }

    func setNavigationBarBackground(color: UIColor, includingStatusBar: Bool = true, animated: Bool = false) {
        navigationBarBackgroundView?.backgroundColor = UIColor.clear
        navigationBar.backgroundColor = UIColor.clear
        navigationBar.barTintColor = UIColor.clear

        let setupOperation = {
            if includingStatusBar {
                self.navigationBarBackgroundView?.isHidden = false
                if self.navigationBarBackgroundView == nil {
                    self.setupBackgroundView()
                }
                self.navigationBarBackgroundView?.backgroundColor = color
            } else {
                self.navigationBarBackgroundView?.isHidden = true
                self.navigationBar.backgroundColor = color
            }
        }

        if animated {
            UIView.animate(withDuration: 0.3) {
                setupOperation()
            }
        } else {
            setupOperation()
        }
    }

    private func setupBackgroundView() {
        var frame = navigationBar.frame
        frame.origin.y = 0
        frame.size.height = 64

        navigationBarBackgroundView = UIView(frame: frame)
        navigationBarBackgroundView?.translatesAutoresizingMaskIntoConstraints = true
        navigationBarBackgroundView?.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin]

        navigationBarBackgroundView?.isUserInteractionEnabled = false

        view.insertSubview(navigationBarBackgroundView!, aboveSubview: navigationBar)
    }
}

Temel olarak gezinme çubuğu arka planını şeffaf hale getirir ve arka plan olarak başka bir UIView kullanır. setNavigationBarBackgroundDurum çubuğuyla birlikte gezinme çubuğu arka plan rengini ayarlamak için gezinme denetleyicinizin yöntemini çağırabilirsiniz .

setNavigationBar(hidden: Bool, animated: Bool)Gezinme çubuğunu gizlemek istediğinizde uzantıdaki yöntemi kullanmanız gerektiğini unutmayın, aksi takdirde arka plan olarak kullanılan görünüm hala görünür olacaktır.


Benim için bu, diğer birçok cevap sorununu hafiflettiği için en iyi cevaptı. Olumsuz tarafı, yanlış olan sabit frame.size.height = 64'tür. Yüksekliği almanın yeni bir yolu da -> .view.window? .WindowScene? .StatusBarManager? .StatusBarFrame.height ?? 0.
Gonçalo Gaspar

1

Bunu dene. Bu kodu appdelegate sınıf didFinishLaunchingWithOptionsişlevinizde kullanın:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[application setStatusBarHidden:NO];
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
    statusBar.backgroundColor = [UIColor blackColor];
}

1

Aşağıdaki kod parçacığı, Hedef C ile çalışmalıdır.

   if (@available(iOS 13.0, *)) {
      UIView *statusBar = [[UIView alloc]initWithFrame:[UIApplication sharedApplication].keyWindow.windowScene.statusBarManager.statusBarFrame] ;
      statusBar.backgroundColor = [UIColor whiteColor];
      [[UIApplication sharedApplication].keyWindow addSubview:statusBar];
  } else {
      // Fallback on earlier versions

       UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
          if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
              statusBar.backgroundColor = [UIColor whiteColor];//set whatever color you like
      }
  }

İOS

0

Çubuk rengi için: Çubuk için özel bir arka plan görüntüsü sağlarsınız.

Metin rengi için: iOS'ta Metin İşleme Hakkında bölümündeki bilgileri kullanın


1
bu bir metin rengi ayarlamakla ilgili değil
Johnykutty

Bir arka plan görüntüsü eklemek, sadece düz bir renk ayarlamak istiyorsanız aşırı bir
şeydir

0

AppDelegate.csYöntemde, StatusBar rengini oldukça basit bir şekilde dosyaya ekleyerek özelleştirmeyi başardım :

public override bool FinishedLaunching(UIApplication app, NSDictionary options)

sonraki kod:

UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;

if (statusBar!=null && statusBar.RespondsToSelector(new Selector("setBackgroundColor:")))
{
   statusBar.BackgroundColor = Color.FromHex(RedColorHex).ToUIColor();
}

Yani şöyle bir şey elde edersiniz:

görüntü açıklamasını buraya girin

Bağlantı: https://jorgearamirez.wordpress.com/2016/07/18/lesson-x-effects-for-the-status-bar/


Bu hangi dil?
Ahmadreza

1
@Alfi Xamarin formları ve arka planda C #
Dan

0

Swift 4

Gelen Info.plistbu özelliği eklemek

Denetleyici tabanlı durum çubuğu görünümünü HAYIR olarak görüntüleyin

ve bundan sonra AppDelegateiçine didFinishLaunchingWithOptionsbu kod satırlarını ekleyin

UIApplication.shared.isStatusBarHidden = false
UIApplication.shared.statusBarStyle = .lightContent

0

Swift 5 ve Xcode 10.2'de

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(0.1 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: {

//Set status bar background colour
let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
statusBar?.backgroundColor = UIColor.red
//Set navigation bar subView background colour
   for view in controller.navigationController?.navigationBar.subviews ?? [] {
      view.tintColor = UIColor.white
      view.backgroundColor = UIColor.red
   }
})

Burada durum çubuğu arka plan rengini ve gezinme çubuğu arka plan rengini düzelttim. Gezinme çubuğunun rengini yorumlamak istemiyorsanız.


0

Swift kodu

            let statusBarView = UIView(frame: CGRect(x: 0, y: 0, width: view.width, height: 20.0))
            statusBarView.backgroundColor = UIColor.red
            self.navigationController?.view.addSubview(statusBarView)

0

İOS 13 * ve Swift 4 için aşağıdaki gibi kullanabilirsiniz.

1 -> Denetleyici tabanlı durum çubuğu görünümünü HAYIR olarak ayarlayın

extension UIApplication {
var statusBarView: UIView? {
    if #available(iOS 13.0, *) {
       let statusBar =  UIView()

        statusBar.frame = UIApplication.shared.statusBarFrame

        UIApplication.shared.keyWindow?.addSubview(statusBar)
      
        return statusBar
    } else {
        let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
        return statusBar
    }
}

didFinishLaunchingWithOptions'da kullanın

UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
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.