IOS में स्टेटस बार टेक्स्ट कलर कैसे बदलें


990

मेरे एप्लिकेशन में एक डार्क बैकग्राउंड है, लेकिन iOS 7 में स्टेटस बार पारदर्शी हो गया। इसलिए मैं वहां कुछ भी नहीं देख सकता, केवल कोने में हरे रंग की बैटरी संकेतक। मैं स्थिति पट्टी पाठ रंग को सफेद में कैसे बदल सकता हूं जैसे यह होम स्क्रीन पर है?


9
इस लिंक में इस मुद्दे पर दिलचस्प जानकारी है: doubleencore.com/2013/09/…-
एड्रियानो लुकास

जवाबों:


1379
  1. सेट UIViewControllerBasedStatusBarAppearanceकरने के लिए YES.plist फ़ाइल में।

  2. में viewDidLoadकरते हैं एक[self setNeedsStatusBarAppearanceUpdate];

  3. निम्नलिखित विधि जोड़ें:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }

नोट : यह अंदर नियंत्रकों के लिए काम नहीं करता है UINavigationController, कृपया नीचे टायसन की टिप्पणी देखें :)

स्विफ्ट 3 - यह अंदर नियंत्रकों को काम करेगा UINavigationController। इस कोड को अपने कंट्रोलर के अंदर जोड़ें।

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

स्विफ्ट 5 और स्विफ्टयूआई

SwiftUI के लिए नामक एक नई स्विफ्ट फ़ाइल बनाएँ HostingController.swift

import Foundation
import UIKit
import SwiftUI

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

फिर कोड की निम्न पंक्तियों को इन में बदलें SceneDelegate.swift

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

सेवा

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

78
मुझे चरण 2 की आवश्यकता नहीं थी
जेसन मूर

37
Xcode5-DP5 के साथ iOS 7 बीटा 5 पर काम नहीं कर रहा है। पसंदीदास्टैटबर्टल्टी को बुलाया जाना प्रतीत नहीं होता है।
wilsontgh

18
UIViewControllerBasedStatusBarAppearance Xcode 5 GM बीज में नियंत्रक-आधारित स्थिति बार उपस्थिति को देखने के लिए बदल दिया गया है
parilogic

42
Xcode GM Seed के लिए उत्तर प्राप्त करें: 1. Info.plist में NO- 2 के रूप में कंट्रोलर-आधारित स्टेटस बार उपस्थिति देखें। AppDelegate में, AppDidFinishLaunching विधि के अंदर, [[UIView उपस्थिति] setTidColor:] [UIColor whiteColor]] डालें;
parilogic

101
UINavigationController एक विशेष मामला है, ऊपर काम नहीं करेगा। बस इस पर मेरे सिर को खरोंचने में घंटों बिता दिए। समाधान के लिए यहां देखें: stackoverflow.com/a/19513714/505457
टायसन

848

वैकल्पिक रूप से, आप व्यू-कंट्रोलर आधारित स्थिति बार उपस्थिति से बाहर निकल सकते हैं:

  1. सेट View controller-based status bar appearanceकरने के लिए NOअपने में Info.plist
  2. कॉल [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

नोट: इस विधि को iOS9 में पदावनत किया गया है। preferredStatusBarStyleइसके बजाय UIViewController पर उपयोग करें । ( Apple डेवलपर लाइब्रेरी देखें )


16
यह काफी बेहतर और आसान मार्ग है।
मिक बर्न

227
कोड करने की आवश्यकता नहीं है। यह सभी प्लिस्ट से किया जा सकता है: (1) सेट "कंट्रोलर-आधारित स्टेटस बार उपस्थिति" को NO और (2) सेट "स्टेटस बार स्टाइल" को "ओपेक ब्लैक स्टाइल"। (कच्चे मान UIViewControllerBasedStatusBarAppearance हैं -> NO और UIStatusBarStyle -> UIStatusBarStyleBlackOpaque)
Swift -rchitect

3
ध्यान दें कि आपको इस काम के लिए प्रासंगिक info.plist value NO पर सेट करनी होगी
अभि Beckert

9
@ गोथिकदेव: अच्छी पकड़। आपके उत्तर को स्वीकार करेगा क्योंकि यह सबसे साफ है। बार स्टाइल के लिए लाइट का विकल्प हो सकता है: UIStatusBarStyleLightContent
बेंका

9
इस विधि को iOS 9 में
खो

439

आप कोड की किसी भी लाइन को लिखे बिना ऐसा कर सकते हैं!
पूरे ऐप के माध्यम से स्टेटस बार टेक्स्ट का रंग सफेद करने के लिए निम्नलिखित करें

आप plist फ़ाइल पर परियोजना :

  • स्थिति बार शैली: Transparent black style (alpha of 0.5)
  • नियंत्रक-आधारित स्थिति बार उपस्थिति देखें: NO
  • स्टेटस बार शुरू में छिपा होता है: NO

12
मुझे नहीं पता कि चीजें बदल गईं, लेकिन UIStatusBarStyleLightContent मूल्य XCode द्वारा मान्यता प्राप्त नहीं है, और किसी भी दस्तावेज में नहीं मिला है ... हालांकि यह काम करने लगता है।
नाथन एच।

5
इसने इसे स्प्लैश स्क्रीन पर भी बदल दिया, जबकि सिर्फ इसे नेविगेटर पर सेट करने से ... Kudos नहीं होगा!
viniciusnz

3
निश्चित रूप से इसे पूरा करने का सबसे आसान तरीका और जैसा कि उल्लेख किया गया है, छप स्क्रीन पर भी काम करता है।
7wonders

4
वहाँ कुछ भी नहीं कहा जाता है UIStatusBarStyleLightContentमें plist infoलेकिन वहाँ है Transparent Blackजो एक ही चाल करना होगा :) इसके अलावा, आप जोड़ने की जरूरत View controller-based status bar appearanceयह है के रूप में यह वहाँ नहीं मूल रूप से है और सभी क्या आप काम करने के लिए :) इसे पाने के लिए की जरूरत है
user1949873

45
मेरे जैसे आलसी लोगों के लिए, कॉपी और पास्ट करना: <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
एडम वेट

241

नोट: अधिकांश अपवोट उत्तर iOS 7/8 के लिए काम नहीं करता है

Info.plist में NO के रूप में 'कंट्रोलर-आधारित स्टेटस बार उपस्थिति' सेट करें

AppDelegate में जोड़ें

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

सेवा

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

यह समाधान iOS 7/8 के लिए काम करता है


10
IOS 9 में डिप्रेस्ड: - /
sudo make

112

मेरे लिए, अन्य उत्तरों (और अन्य स्रोतों / प्रलेखन से) में सभी चीजों का उपयोग करने के साथ कुछ नहीं हुआ। नेविगेशन बार स्टाइल को XIB में "ब्लैक" सेट करने में क्या मदद मिली। इसने पाठ को बिना किसी कोड के सफेद रंग में बदल दिया।

यहां छवि विवरण दर्ज करें


3
डिवाइस में ऊपर दिए गए किसी भी उत्तर ने मेरे लिए काम नहीं किया लेकिन यह एक है। मुझे लगता है कि यह नई प्रणाली के बारे में सब कुछ बताता है कि आपको status_bar टेक्स्ट WHITE करने के लिए नेविगेशन_बार को BLACK पर सेट करना होगा ।
श्रीमती जेट

2
बहुत सारी चीजों से संघर्ष करने के बाद, यह काम खत्म हो गया है। शैली को डिफ़ॉल्ट पर सेट किया गया था। इसे बदल दिया और अन्य सभी स्टेटस बार हैक को छीन लिया और यह काम करता है।
गुजमीन १

1
यदि आप IB में अपनी सभी नौसेना पट्टियाँ सेट नहीं करना चाहते हैं, तो आप इसका स्वरूप प्रॉक्सी भी सेट कर सकते हैं। [[UINavigationBar उपस्थिति] setBarStyle: UIBarStyleBlack];
स्टीव मोजर

3
IOS7 स्टोरीबोर्ड में मेरे लिए काम नहीं करता है। ऐसा लगता है कि यह एक साइड-इफेक्ट ओएस कुछ और हो सकता है?
क्रिस

मैं इस बात की पुष्टि करना चाहता हूं कि उपरोक्त सभी उत्तर मेरे लिए काम नहीं किए हैं। छवि के बाद, स्थिति पट्टी पाठ सफेद दिखता है। लेकिन मैं फिर से दोहराता हूं, उपरोक्त ANSWERS Xcode 6.2 और iOS 8.2 के साथ काम नहीं करता है।
मार्कस

98

मेरे लिए किसी ने काम नहीं किया, इसलिए यहां काम करने का हल है ...

में Info.plist, एक पंक्ति जोड़ें:

UIViewControllerBasedStatusBarAppearance, और मान सेट करें NO

फिर AppDelegate में didFinishLaunchingWithOptions, इन पंक्तियों को जोड़ें:

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

इस समाधान ने मेरे लिए काम किया जबकि ऊपर वाले ने नहीं किया।
जॉन कॉन्टारिनो

बहुत बढ़िया, लेकिन यह UIViewControllerBasedStatusBarAppearance उसी में परिवर्तित होता है: नियंत्रक-आधारित स्थिति बार उपस्थिति स्वचालित रूप से देखें :)
अभिषेक थपलियाल

63

इसके लिए आपको कोई कोड करने की आवश्यकता नहीं है

आपको info.plist में "कंट्रोलर-आधारित स्टेटस बार उपस्थिति" कुंजी जोड़ने की आवश्यकता है: यहां छवि विवरण दर्ज करें

& इसके मूल्य प्रकार को बूलियन और मान के लिए सेट करें। फिर प्रोजेक्ट सेटिंग्स पर क्लिक करें, फिर जनरल टैब पर क्लिक करें और परिनियोजन जानकारी के तहत पसंदीदा स्थिति पट्टी शैली को निम्न पर सेट करें। इस प्रकार है:

यहां छवि विवरण दर्ज करें

बस।


1
मुझे आपका दृष्टिकोण पसंद आया! मेरे मामले में, मैं यह पता लगाने की कोशिश कर रहा था कि फुलस्क्रीन (w / o नेविगेशन) के होने पर ही स्टेटस बार स्टाइल को हल्का कैसे बनाया जाए। फिर, मुझे एहसास हुआ कि अन्य सभी स्क्रीन को एक ही प्रकाश शैली में फिट होना चाहिए। तो एक अच्छा समाधान है कि आप पूरी चीज़ को सेट करें। धन्यवाद! (:
इगोर डी लोरेंज़ी

यदि आपका ऐप चलते समय आपको इसे बदलने की आवश्यकता नहीं है। यह सबसे अच्छा तरीका है।
माइकल

यह दृष्टिकोण निश्चित रूप से काम करता है लेकिन यह iPad पर एक अजीब मुद्दे का परिचय देता है। यदि आपका आवेदन deeplinks का समर्थन करता है, और जब आप एप्लिकेशन को deeplink के माध्यम से लॉन्च करते हैं तो स्टेटस बार पर दिखाई देने वाला backlink गायब हो जाता है।
चित्रांशु अस्थाना

सबसे अच्छा और सबसे सरल।
अमित कुमार

मेरे लिए सबसे अच्छा समाधान: D
गोल्ड चिकन

48

निम्नलिखित के रूप में सिर्फ दो चरण:

चरण 1:

की जानकारी टैब के तहत project target, पंक्ति जोड़ें:

UIViewControllerBasedStatusBarAppearance, मूल्य निर्धारित किया है NO

चरण 2:

परियोजना में AppDelegate.m:

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

4
मैं प्यार करता हूँ इसके लिए इस उत्तर पहली बार मैं "आवेदन" परम का उपयोग कर रहा है))
MUH मोबाइल इंक

मत संकेतन और यह सही होगा;)
रिवेरा

43

यह 18 सितंबर, 2013 को जारी गोल्डन मास्टर आईओएस 7 और एक्सकोड 5 जीएम बीज और आईओएस 7 एसडीके में काम करता है (कम से कम नेविगेशन सिस्टम छिपा हुआ है:

  1. सेट the UIViewControllerBasedStatusBarAppearanceकरने के लिए NOमें Info.plist

  2. में ViewDidLoadविधि या कहीं भी, जहाँ आप परिवर्तन स्थिति पट्टी शैली करना चाहते हैं: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


1
UIViewControllerBasedStatusBarAppearance डिफ़ॉल्ट मान हां में लगता है। "ऐप्स नए दृश्य नियंत्रक-आधारित स्थिति बार प्रबंधन प्रणाली का उपयोग करने के लिए डिफ़ॉल्ट हैं। इसमें से बाहर निकलने के लिए, अपने Info.plist के लिए UIViewControllerBasedStatusBarAppearance कुंजी के लिए NO का मान जोड़ें।" [ bgr.com/2013/09/10/ios-7-gm-change-log-release-notes/]
Zsolt

1
हां !! UIViewControllerBasedStatusBarAppearance को NO पर सेट करने के बाद, स्थिति बार दृश्य में छिप जाती है।
कैशली

क्या इसे सभी व्यूडलोड पर लागू किया जाना चाहिए?
अर्नले विज्केनो

आप इसे सिर्फ appDelegates didFinishLading मेथड में जोड़ सकते हैं। या यदि आप इसे बदलना नहीं चाहते हैं, तो पहले दृश्य में देखेंDidLoad विधि।
डेनिस फेडोटोव्स

1
शानदार, यह एक काम किया है। सरल और महान कोडिंग।
फेलिप

32

यदि आपका UIViewController एक UINavigationController के अंदर है, तो आपको BarStyle सेट करना होगा:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

मूल उत्तर यहाँ है

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


नहीं, यह केवल नेविगेशन बार के रंग को स्टेटस बार टेक्स्ट के रंग के समान बनाता है। यह समस्या को छुपाता है, इसे ठीक नहीं करता है!
wpearse

2
IOS7 में स्टेटस बार UINavigationBar की नकल करेगा यदि दृश्य में UINavigationController है, तो कई मामलों में, यह सही उत्तर है।
जोंस्टाफ

29

यदि आपके पास इंटरफ़ेस निर्माता के माध्यम से बनाया गया एक एम्बेडेड नेविगेशन नियंत्रक है , तो अपने नेविगेशन नियंत्रक का प्रबंधन करने वाले वर्ग में निम्नलिखित सेट करना सुनिश्चित करें:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

आपको बस इतना ही चाहिए।


यह एकमात्र समाधान था जो मेरे लिए स्टोरीबोर्ड-कम और xib-less ऐप में काम करता था। गैर-आईबी उपयोगकर्ताओं के लिए भी सहायक होना चाहिए।
जॉनी स्पार्क्स

2
यह मेरे लिए एकदम सही था जब मुझे प्रत्येक दृश्य नियंत्रक में शैली को अलग-अलग सेट करने की आवश्यकता थी
बेन

यदि आप "सेट करने के लिए नियंत्रक-आधारित स्थिति बार उपस्थिति" को हां में बनाए रखना चाहते हैं, तो यह जाने का तरीका है। धन्यवाद!
मेघुरफिन

28

IOS 7 ऐप के लिए, मैं एक स्विफ्ट प्रोजेक्ट पर Xcode 6 बीटा 5 का उपयोग कर रहा हूं ।

यहाँ मैंने क्या किया है, और यह काम करता है:

Info.plist:

यहां छवि विवरण दर्ज करें


2
धन्यवाद, यह केवल आपके समाधान की तरह लग रहा है IOS7 के नवीनतम क्रिया के साथ काम कर रहा है
Dekel Maman

यह समाधान लॉन्च स्क्रीन में ऐप लोड करते समय स्टेटस बार दिखाता है।
जुआन बोएरो

XCode 7.1 में मेरे मुद्दों को हल किया। नवीनतम संस्करण। Apple कुछ काम करने के लिए कुछ महत्वपूर्ण टुकड़ों को भूल गया। फिर।
माइकल

22

AppDelegate.m में, निम्नलिखित जोड़ें।

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

और प्लिस्ट फ़ाइल में, 'कंट्रोलर-आधारित स्टेटस बार उपस्थिति' को NO पर सेट करें।


20

सीधे शब्दों में कहें

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

5
एक और केवल जवाब है कि वास्तव में मेरे लिए काम किया।
विम हैनस्ट्रा

6
लेकिन इसके लिए हमें नियंत्रक-आधारित स्थिति बार उपस्थिति को चुनने की आवश्यकता है ।
iamyogish

IOS9 में पदावनत
दिमित्रीस

20

खैर, यह वास्तव में मेरे लिए केक के एक टुकड़े की तरह काम कर रहा है।

यदि आपके ऐप की पर जाएं info.plist

  1. को सेट View controller-based status bar appearanceकरेंNO
  2. को सेट Status bar styleकरेंUIStatusBarStyleLightContent

इसके बाद अपने ऐप के डेलीगेट पर जाएं और नीचे दिए गए कोड में पेस्ट करें जहां आपने अपनी विंडो का RootViewController सेट किया है।

#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];
}

बिंगो। यह मेरे लिए काम कर रहा है।


1
मुझे लगता है कि यह सही उत्तर है (प्लिस्ट का हिस्सा) ... मैं didfinishlaunchingwithoptions पर स्थिर कोड क्यों जोड़ूंगा ... यदि आपको पूरे ऐप के लिए समान रंग की आवश्यकता है तो यह सही तरीका है
user2387149

20
  1. Project-> पर जाएंTarget ,

  2. फिर सेट Status Bar Styleकरें Light। यह लॉन्च स्क्रीन से स्थिति-बार को सफेद बनाता है। प्रोजेक्ट सेटिंग

  3. फिर सेट View controller-based status bar appearanceके बराबर NOमें Info.plist


2
दूसरे भाग जहां वास्तविक सेट View controller-based status bar appearance equalकरने के लिए NOटुकड़ा मुझे याद आ रहा था। धन्यवाद
विल

18

जानकारी सूची में बदलें स्विफ्ट 3 में सिर्फ 2 चरणों के साथ बहुत आसान है। अपनी info.plist पर जाएं और View controller-based status bar appearance"NO" की कुंजी बदलें । फिर Appdelegate में बस इस लाइन को didfinishlaunchingwithoptions मेथड में जोड़ें

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

यह iOS9 में पदावनत कर दिया गया है अब आपको इस संपत्ति को rootviewcontroller में ओवरराइड करना चाहिए

ऐसा करने के लिए iOS 9 में अपदस्थ किया गया है यह rootviewcontroller पर करना चाहिए

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }

1
यह सिर्फ भयानक भाई है :) धन्यवाद।
नरेश रेड्डी M

ऐसा करने से iOS 9 में
अपग्रेड किया गया है

17

Apple डेवलपर डॉक्यूमेंटेशन द्वारा वर्णित के अनुसार iOS 7 व्यक्तिगत बार कंट्रोलरों को स्टेटस बार की उपस्थिति निर्धारित करने की अनुमति देता है:

iOS 7 ऐप कंट्रोलर को रनिंग करते समय स्टेटस बार की शैली को समायोजित करने की क्षमता देता है। स्टेटस बार शैली को गतिशील रूप से बदलने का एक अच्छा तरीका है preferredStatusBarStyle- एक एनीमेशन ब्लॉक के भीतर और स्थिति बार उपस्थिति को अपडेट करना और कॉल करना setNeedsStatusBarAppearanceUpdate

विश्व स्तर पर स्थिति बार उपस्थिति की स्थापना एक दो-चरणीय प्रक्रिया है।

सबसे पहले, आपको iOS को यह बताना होगा कि आप व्यू-बाय-व्यू आधार पर स्टेटस बार उपस्थिति सेट नहीं करना चाहते हैं।

फिर आपको कार्यभार संभालने और वास्तव में नई वैश्विक स्थिति पट्टी शैली निर्धारित करने की आवश्यकता है।

व्यू-बाय-व्यू स्टेटस बार कंट्रोल को अक्षम करने के लिए, आपको View controller-based status bar appearanceप्रॉपर्टी को सेट करना होगाInfo.plist

प्रोजेक्ट नेविगेटर खोलें और अपने iOS ऐप के लिए प्रोजेक्ट चुनें, फिर इन्फो टैब चुनें।

एक पंक्ति में होवर करें, फिर प्लस चिह्न पर क्लिक करें जो आपके लिए एक नई संपत्ति जोड़ने के लिए प्रकट होता है .plist

View controller-based status bar appearanceकुंजी फ़ील्ड में दर्ज करें , फिर सुनिश्चित करें कि टाइप फ़ील्ड किस पर सेट है Boolean। अंत में, एंटर करेंNO में, मान फ़ील्ड में ।

स्थिति पट्टी के लिए एक वैश्विक शैली सेट करने के लिए, एक कुंजी Status bar style, एक प्रकार Stringऔर के मान के साथ जानकारी टैब के तहत एक और संपत्ति जोड़ें Opaque black style

यहाँ एक ब्लॉग पोस्ट थोड़ा और विस्तार और कुछ नमूना कोड के साथ है:

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


धन्यवाद। मेरा मुद्दा यह था कि मैंने यह नहीं देखा कि स्ट्रिंग पर "कंट्रोलर-आधारित स्थिति बार उपस्थिति" का प्रकार सेट किया गया था। .Plist फ़ाइल का संपादन "हाथ से" और बूलियन मूल्य में डालने से चीजें साफ हो जाती हैं।
क्रिस प्रिंस

12

कुछ अतिरिक्त करने की आवश्यकता नहीं है, बस इस कोड को अपने viewController में लिखें और स्टेटस बार का रंग सफेद करें

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}

कार्यान्वयन के बाद ViewController.m के तहत यह रखो। इसका सबसे आसान और महान काम करता है! धन्यवाद मोहित!
फिल मूलिन्स

12

Xcode GM बीज के लिए अपडेट किया गया उत्तर:

  1. के रूप में Info.plistडाल दियाView controller-based status bar appearanceNO

  2. परियोजना में, सेट करें:

    यहां छवि विवरण दर्ज करें

  3. ViewDidLoad में:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


उसने टैब बार बदल दिया, मेरे लिए स्टेटस बार नहीं।
कीथ

11

मुझे लगता है कि सभी उत्तर वास्तव में समस्या को इंगित नहीं करते हैं क्योंकि वे सभी विशिष्ट परिदृश्यों में काम करते हैं। लेकिन अगर आपको सभी मामलों को कवर करने की आवश्यकता है तो अंक का पालन करें:

इस पर निर्भर करते हुए कि आपको स्थिति बार प्रकाश शैली की आवश्यकता कहाँ है, आपको हमेशा इन 3 बिंदुओं को ध्यान में रखना चाहिए:

1) यदि आपको लॉन्च स्क्रीन पर या अन्य स्थानों पर स्थिति पट्टी की आवश्यकता होती है, तो आप इसे नियंत्रित नहीं कर सकते हैं (न कि नियंत्रक में, बल्कि कुछ सिस्टम नियंत्रित तत्व / लॉन्च स्क्रीन जैसे क्षण) आप अपनी परियोजना सेटिंग्स पर जाते हैं प्रोजेक्ट सेटिंग्स

2) यदि आपके पास एक नेविगेशन नियंत्रक के अंदर एक नियंत्रक है तो आप इसे इंटरफ़ेस बिल्डर में निम्नानुसार बदल सकते हैं:

a) अपने नेविगेशन कंट्रोलर के नेविगेशन बार को चुनें अपने नेविगेशन कंट्रोलर के नेविगेशन बार का चयन करें

b) फिर नेविगेशन बार की शैली को "ब्लैक" पर सेट करें, क्योंकि इसका मतलब है कि आपके पास "ब्लैक" होगा -> आपके स्टेटस बार के नीचे डार्क बैकग्राउंड, इसलिए यह स्टेटस बार को व्हाइट में सेट करेगा

यहां छवि विवरण दर्ज करें

या कोड में निम्नानुसार है

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) यदि आपके पास अकेले नियंत्रक है जिसे अपनी स्थिति बार शैली की आवश्यकता है और यह UINavacController के रूप में कुछ कंटेनर संरचना में एम्बेडेड नहीं है

नियंत्रक के लिए कोड में स्थिति बार शैली सेट करें:

कोड में स्टेटस बार स्टाइल सेट करना


कृपया अपने मामले की व्याख्या करें और मैं मदद करने की कोशिश करूँगा
फॉक्स

1
मुझे StatusBarIsIntiallyHidden = plist के साथ-साथ ViewControllerBasedApplicationStatusBarAppearnce = NO को plist में जोड़ना था। तब यह भाग एक का उपयोग करके काम करता है
माइकल

क्या आपके पास एक स्प्लैशस्क्रीन है जिसमें पहले लोडिंग व्यू कंट्रोलर के समान "छवि" है? और यह भी, अपने लक्ष्य के "जानकारी" अनुभाग में आप "छिपाने की स्थिति पट्टी" को झूठे और अपने .plist से निपटने से बचने की कोशिश कर सकते हैं। "StatusBarIsIntiallyHidden" ध्वज
फॉक्स

मैं नहीं। यह उत्पन्न डिफ़ॉल्ट xib का उपयोग कर रहा है।
माइकल

मुझे वास्तव में यह मुद्दा मिला जब xcode 7.1 में एक नया प्रोजेक्ट बनाया गया था, यही वजह है कि मुझे लगा कि यह बहुत अजीब है
माइकल

10

बस बुला रहा है

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

में

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

AppDelegateiOS7 में मेरे लिए मेरे काम का तरीका शानदार है।


वाह, लोटा बकवास यहाँ लेकिन यह जवाब मेरे लिए काम किया। मैं Xcode 6 और iOS 8 SDK
Ethan Parker

1
बहुत बढ़िया, मेरे लिए iOS 9 मेंView controller-based status bar appearance = NO
dstudeba

9

यह iOS 7 UI ट्रांजिशन गाइड में प्रलेखित है , जिसे सीधे एक्सेस करने के लिए आपको Apple डेवलपर आईडी की आवश्यकता होती है। प्रासंगिक अंश:

क्योंकि स्थिति पट्टी पारदर्शी है, इसलिए इसके पीछे का दृश्य दिखाता है। [...] UIStatusBarStyleयह बताने के लिए एक स्थिरांक का उपयोग करें कि क्या स्थिति पट्टी सामग्री अंधेरे या हल्की होनी चाहिए:

UIStatusBarStyleDefaultअंधेरे सामग्री प्रदर्शित करता है। [...]

UIStatusBarStyleLightContentप्रकाश सामग्री प्रदर्शित करता है। जब स्टेटस बार के पीछे डार्क कंटेंट का उपयोग करें।

ब्याज की भी संभावित:

IOS 7 में, आप अलग-अलग vew कंट्रोलर से स्टेटस बार की शैली को नियंत्रित कर सकते हैं और ऐप को चलाते समय इसे बदल सकते हैं। इस व्यवहार का चयन करने के UIViewControllerBasedStatusBarAppearanceलिए, ऐप की Info.plistफ़ाइल में कुंजी जोड़ें और इसे मूल्य दें YES

मैं निश्चित रूप से दस्तावेज़ के माध्यम से एक नज़र रखने की सलाह दूंगा, जो फिर से, आप अपने ऐप्पल डेवलपर आईडी के साथ उपयोग कर सकते हैं।


3
मैंने पहले ही कोशिश की है [आवेदन सेटस्टैटसबर्टल: यूआईएसटैटसबर्सेल्टी लाइटकंटेंट]; लेकिन वास्तव में कुछ भी नहीं बदलता है, पाठ का रंग अभी भी काला है
ऑलेक्ज़ेंडर वेरमचुक

मैं और अधिक मदद करना पसंद करूंगा, लेकिन जैसा मैं कहता हूं, मुझे पता नहीं है कि आईओएस विकास प्रक्रिया से परिचित है कि क्या सुझाव दिया जाए। माफ़ करना!
हारून मिलर

1) दृश्य 2 में YIV में UIViewControllerBasedStatusBarAppearance सेट करें) ViewDidLoad में एक [आत्म setNeedsStatusBarAppearanceUpdate] करें; 3) निम्नलिखित विधि जोड़ें :-( UIStatusBarStyle) तरजीही StarBarStyle {वापसी UIStatusBarStyleLightContent; }
पीटर बी। क्रेमर

9

यहाँ स्थिति पट्टी परिवर्तन के बारे में Apple दिशानिर्देश / निर्देश है । स्टेटस बार में केवल डार्क एंड लाइट (जबकि और ब्लैक) की अनुमति है।

यहाँ है - स्टेटस बार स्टाइल कैसे बदलें:

यदि आप स्टेटस बार स्टाइल, एप्लिकेशन स्तर सेट करना चाहते हैं तो अपनी `.plist 'फ़ाइल में सेट UIViewControllerBasedStatusBarAppearanceकरें NO

यदि आप व्यूअर स्तर पर स्टेटस बार स्टाइल सेट करना चाहते हैं, तो इन चरणों का पालन करें:

  1. सेट UIViewControllerBasedStatusBarAppearanceकरने के लिए YESमें .plist, फ़ाइल यदि आप केवल UIViewController स्तर पर सेट स्थिति पट्टी शैली की जरूरत है।
  2. ViewDidLoad में फ़ंक्शन जोड़ें - setNeedsStatusBarAppearanceUpdate

  3. अपने दृश्य नियंत्रक में अधिमान्यस्टार्टबर्टल को ओवरराइड करें।

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

स्थिति बार शैली सेटअप स्तर के अनुसार .plist का मान सेट करें। यहां छवि विवरण दर्ज करें


एप्लिकेशन लॉन्च के दौरान या अपने व्यू कंट्रोलर के व्यूडॉलड के दौरान स्टेटस बार के लिए बैकग्राउंड कलर बदलने / सेट करने के लिए यहां कुछ हैक करने की ट्रिक दी गई है।

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
    }

}



यहाँ परिणाम है:

यहां छवि विवरण दर्ज करें


8

मैंने कुछ चीजें अलग कीं और यह मेरे लिए काम करता है।

कोड में कोई बदलाव नहीं होने के कारण, मैंने अपनी .plist फ़ाइल को इस तरह कॉन्फ़िगर किया:

  • नियंत्रक-आधारित स्थिति बार उपस्थिति> सं देखें
  • स्थिति बार शैली> UIStatusBarStyleLightContent (सरल स्ट्रिंग)

मुझे उम्मीद है यह मदद करेगा।

संपादित करें

प्रत्येक दृश्य नियंत्रक के लिए मैं स्टोरीबोर्ड में, "अनुमान" से "लाइट लाइट" में "स्टेटस बार" की सिमित मेट्रिक्स प्रॉपर्टी को बदलता हूं।


8

यदि आप स्विफ्ट के साथ एक ही परिणाम चाहते हैं, तो आप इस कोड का उपयोग अपनी AppDelegate.swift फ़ाइल में कर सकते हैं:

UINavigationBar.appearance().barStyle = .BlackTranslucent

और आपके स्टेटस बार का टेक्स्ट सफ़ेद होगा :-)!


8

यदि आप अभी भी जानकारी View controller-based status bar appearanceमें उपयोग करना चाहते हैं । YES पर सेट करें, जिसका अर्थ है कि आप प्रत्येक दृश्य-नियंत्रक के लिए स्थिति पट्टी बदल सकते हैं, ViewDidLoad में स्थिति-बार में सफेद पाठ के लिए निम्न का उपयोग करें:

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

नेविगेशन बार! = स्थिति पट्टी।
माइकल पीटरसन

... क्या तुमने कोशिश की!? (और हाँ, स्टेटस बार के लिए)
इरिक

7

प्लिस्ट में, इसे जोड़ें:

  • स्थिति बार शैली: UIStatusBarStyleLightContent
  • नियंत्रक-आधारित स्थिति बार उपस्थिति देखें: NO

7

in.plist फ़ील्ड मान सेट करें NO दृश्य नियंत्रक-आधारित स्थिति बार उपस्थिति और लक्ष्य> सामान्य सेटिंग में स्थित स्टेटबार शैली प्रकाश सेट करें।


2
विजेता विजेता चिकन डिनर
tommybananas

7

मैं आपको अपने प्रश्न का पूरा उत्तर दूं। स्टेटस बार टेक्स्ट का रंग बदलना बहुत आसान है लेकिन आईओएस 7 में इसका थोड़ा भ्रमित होना विशेष रूप से न्यूबरीज़ के लिए है।

यदि आप स्टोरीबोर्ड में दृश्य नियंत्रक का चयन करके और दाईं ओर सिमुलेटेड मेट्रिक्स पर जाकर काले से सफेद में रंग बदलने की कोशिश कर रहे हैं, तो यह काम नहीं करेगा और मुझे पता नहीं क्यों। इसे इस तरह से बदलकर काम करना चाहिए लेकिन कोई भी कैसे।

दूसरे, आपको UIViewControllerBasedStatusBarAppearance संपत्ति अपनी मुट्ठी में नहीं मिलेगी, लेकिन डिफ़ॉल्ट रूप से वहाँ नहीं है। आपको इसे + बटन पर क्लिक करके अपने आप से जोड़ना होगा और फिर इसे NO पर सेट करना होगा।

ios 7 स्टेटस बार टेक्स्ट कलर

अंत में, आपको अपनी AppDelegate.m फाइल में जाना होगा और didFinishLaunchingWithOptions विधि में निम्नलिखित को जोड़ना होगा, निम्न पंक्ति जोड़ें:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

यह आपके सभी दृश्य नियंत्रकों के लिए रंग को सफेद में बदल देगा। उम्मीद है की यह मदद करेगा!


इस विधि को iOS 9
Trung Bui
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.