IOS स्टेटस बार को कैसे छिपाएं


219

मेरे iOS वीडियो ऐप में स्टेटस बार कुछ व्यू कंट्रोलर्स में छिपा हुआ है। मैंने निम्नलिखित कोड का उपयोग करके ऐसा किया है।

[[UIApplication sharedApplication] setStatusBarHidden:YES];
  • यह iOS 5 और iOS 6 के लिए काम करता है, लेकिन iOS 7 में नहीं।

  • मैंने विशेष रूप से कंट्रोलर में इसके साथ प्रयास किया,

उदाहरण के लिए:

-(BOOL)prefersStatusBarHidden { return YES; }

यह अच्छी तरह से काम करता है, लेकिन मैं पैरेंट व्यू कंट्रोलर में फिर से स्टेटस शो नहीं कर सकता।



1
यदि स्टोरीबोर्ड में स्थिति बार शैली सेट की गई है, तो "देखें नियंत्रक-आधारित स्थिति पट्टी" (नीचे) को बदलने के बाद, शैली को प्लिस्ट में सेट करना पड़ सकता है क्योंकि दृश्य नियंत्रक सेटिंग का अब उपयोग नहीं किया जाएगा। stackoverflow.com/questions/18924345/…
मैट

1
मैंने एक और सवाल का जवाब दिया। इसे इस्तेमाल करे। [क्रमिक रूप से स्टेटस बार छुपाने का सबसे आसान तरीका] [1] [१]: stackoverflow.com/a/27339754/3718498
वाटारू '

1
मैंने इसके लिए एक ट्रिक का उपयोग किया - मैंने इसे फली cocoapods.org/pods/UIViewController+ODStatusBar के रूप में प्रकाशित किया , मुझे उम्मीद है कि यह किसी के लिए भी उपयोगी होगा
एलेक्स नाज़र्स्की

यहां के जवाबों को अब हटा दिया गया है। IOS 9 के लिए सही उत्तर खोजने में मुझे परेशानी हुई, जब बस LUNCH SCREEN के लिए स्टेटस बार छिपाया गया , इसलिए नीचे लिंक करना ताकि दूसरों को यह पता लगाना आसान हो कि कैसे करना है: stackoverflow.com/questions/34413448/…
बेन

जवाबों:


277

आपको यह मान प्लिस्ट में जोड़ना चाहिए: " नियंत्रक-आधारित स्थिति बार उपस्थिति देखें " और इसे " NO " पर सेट करें ।

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


40
संदर्भ के लिए, कच्ची कुंजी हैUIViewControllerBasedStatusBarAppearance
विलियम डेनिस

1
@ Rajneesh071 अगर मुझे काम की ज़रूरत है तो मुझे पसंदीदास्टैटसबर्टल सेट चाहिए तो मुझे क्या करना चाहिए "View controller-based status bar appearance" set it to "YES".?
बिमावा


आप किस मुद्दे का सामना कर रहे हैं?
रजनीश ० Raj१

पदावनत लगता है, आपके ऐप को तोड़ देगा
बेन


113

Viewdidload में निम्न पंक्ति जोड़ें

  [[UIApplication sharedApplication] setStatusBarHidden:YES
                                        withAnimation:UIStatusBarAnimationFade];

और नई विधि जोड़ें

  - (BOOL)prefersStatusBarHidden {
          return YES;
  }

यह भी जानकारी को बदलते हैं। फाइल फ़ाइल नियंत्रक-आधारित स्थिति बार उपस्थिति देखें = "नहीं।"

यह मेरे लिए काम करता है


यह मेरे लिए काम कर रहा है, लेकिन मुझे नीचे की पंक्ति को भी मुट्ठी में जोड़ने की जरूरत है। "कंट्रोलर-आधारित स्थिति बार उपस्थिति देखें" = NO i, e इसमें निम्नलिखित पंक्ति जोड़ें viewdidload [[UIApplication साझाApplication] setStatusBarHidden: YES withAnimation: UIStatusararAnimationFade]; और नई विधि जोड़ें - (BOOL) प्रीफरसैटसबर्हेड {रिटर्न YES; } "देखें नियंत्रक-आधारित स्थिति बार उपस्थिति" = Plist फ़ाइल में NO
रेतीले

prefersStatusBarHiddenमेरे लिए क्या चाल है (क्या इस तरह के अन्य लोगों के साथ इस समाधान के साथ)
एबडो

34

Plist में निम्नलिखित गुण जोड़ें।

Status bar is initially hidden = YES

View controller-based status bar appearance = NO

अब स्टेटस बार छिपा होगा।


8
कच्ची चाबियां UIStatusBarHidden और UIViewControllerBasedStatusBarAppearance होगी
leolobato

27

इस सरल विधि का प्रयास करें:


उद्देश्य सी:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated]
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated]
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}

स्विफ्ट:

override func viewWillAppear(animated: Bool) 
{
    super.viewWillAppear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}

override func viewWillDisappear(animated: Bool) 
{
    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}

1
यह एक अद्भुत जवाब था! इसके अलावा विभिन्न UIStatusBarAnimationएस के साथ यह कोशिश करो , वे बहुत महान हैं।
वेदतोपकर

मत भूलना [super viewWillAppear:animated]और[super viewWillDisappear:animated]
SamB

1
इस सरल समाधान ने मेरे लिए iOS 10. सरल आदमी बनने का मार्ग तैयार किया!
coolcool1994

14

मैंने निम्नलिखित कार्य किया और यह काम करने के लिए भी लगता है (आईओएस 8 में भी):

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}

12
  • UIApplication.setStatusBarX को iOS9 के रूप में चित्रित किया गया है
  • यह आपकी जानकारी में UIViewControllerBasedStatusBarAppearance = NO करने के लिए पदावनत है।
  • इसलिए हमें अपने सभी दृश्य नियंत्रकों में पसंदीदास्टारबर्क्स का उपयोग करना चाहिए

लेकिन यह तब और दिलचस्प हो जाता है जब इसमें UINavigationController शामिल हो:

  • यदि नेविगेशनबर्हेड = सत्य है, तो बच्चे को UIViewController का पसंदीदास्टैटबर्क्स कहा जाता है, क्योंकि बच्चा स्टेटस बार के तहत सामग्री प्रदर्शित कर रहा है।
  • यदि नेविगेशनबेरहिड = गलत है, तो UINavigationController के पसंदीदास्टैटबर्क्स को कॉल किया जाता है, आखिरकार यह स्टेटस बार के तहत कंटेंट प्रदर्शित कर रहा है।
  • UINavigationController का डिफ़ॉल्ट पसंदीदाStatusBarStyle UINav.navigationBar.barStyle के मान का उपयोग करता है। .Default = काली स्थिति पट्टी सामग्री, .Backack = सफेद स्थिति पट्टी सामग्री।
  • इसलिए यदि आप कुछ कस्टम रंग (जो आप की संभावना है) के लिए barTintColor सेट कर रहे हैं, तो आपको सफेद स्थिति बार सामग्री प्राप्त करने के लिए बार-सेट को भी स्थापित करना होगा। मैं barTtyColor सेट करने से पहले barStyle को काले रंग में सेट कर दूंगा, अगर barStyle barTintColor को ओवरराइड करता है।
  • एक विकल्प यह है कि आप बार शैली के साथ घूमने के बजाय UINavigationController उप-वर्ग कर सकते हैं।
  • फिर भी, यदि आप UINavigationController उप-केंद्र करते हैं, तो आपको नेविगेशन पट्टी पर सही स्थिति में कोई नियंत्रण नहीं मिलता है। किसी तरह UIKit इस स्थिति में UINavigationController पूछे बिना बच्चे UIViewController के लिए सीधे चला जाता है। मैंने सोचा होगा कि बच्चे को नहलाने के लिए UINavigationController की ज़िम्मेदारी होनी चाहिए <।
  • और modalPresentationStyle = .FullScreen अगर UIViewController को केवल स्टेटस बार में मामूली रूप से प्रदर्शित किया जाता है।
  • यदि आपको एक कस्टम प्रस्तुति शैली मोडल व्यू कंट्रोलर मिल गया है और आप वास्तव में इसे स्टेटस बार को नियंत्रित करना चाहते हैं, तो आप modalPresentationCapturesStatusBarAppearance = true सेट कर सकते हैं।

सेब सिर्फ सलाह के एक टुकड़े का पालन क्यों नहीं कर सकता? अगर यह टूटा नहीं है, तो इसे ठीक न करें!
जारगानो 89६

9

IOS7 में स्टेटस बार को छिपाने के लिए आपको कोड की 2 लाइनों की आवश्यकता होती है

  1. आवेदन में: (UIApplication *) आवेदन किया था

     [[UIApplication sharedApplication] setStatusBarHidden:YES];
    
  2. info.plist में इसे जोड़ें

     View-Controller Based Status Bar Appearance = NO
    

8

बेहतर समझ के लिए टिप्पणियों के साथ कुछ फ़ोटो जोड़ें:

किसी भी परिवर्तन से पहले ऐप

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

Project Navigatorनामित आपके फ़ोल्डर में पाया गया Supporting Filesऔर * .plist फ़ाइल पर क्लिक करें

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

आपके द्वारा दिखाए जाने के बाद आपके ऐप की अलग सेटिंग दिखाई देगी। आपको 2 कुंजी जोड़ने की आवश्यकता है UIStatusBarHiddenऔर UIViewControllerBasedStatusBarAppearance। आप इसे केवल बटन पर क्लिक करके कर सकते हैं

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

+ दबाने के बाद आप कुंजी में से एक चुन सकते हैं - बस टाइप करना शुरू करें।

सही संस्करण:

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

और अंत में इस बदलाव को लागू करने के बाद आवेदन करें:

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

इसके अलावा, आप यहां वैकल्पिक समाधान पा सकते हैं


8

IOS10 में मुझे बस इतना करना है कि prefersStatusBarHiddenमेरी RootViewController(स्विफ्ट) में var को ओवरराइड करें :

override var prefersStatusBarHidden: Bool {
    return true
}

7

उसकी कोशिश करो;

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

महान। मैं उस व्यू कंट्रोलर पर स्थिति पट्टी को छिपाने के लिए इसका उपयोग करने में सक्षम था, जिस पर उपयोगकर्ता द्वारा लॉग इन करने के बाद इसे
अनहाइड नहीं

5

IOS7 में अपना स्टेटस बार छिपाने के लिए:

अपनी plist-file खोलें, फिर एक पंक्ति जोड़ें, जिसे "नियंत्रक-आधारित स्थिति बार उपस्थिति देखें" कहा जाए और उसका मान सेट करें NO


5

यहाँ स्विफ्ट संस्करण (पूर्व iOS9) है:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}

यह भी काम करता है (iOS7 +):

override func prefersStatusBarHidden() -> Bool {
    return true
}

आपको कॉल करने की भी आवश्यकता है:

setNeedsStatusBarAppearanceUpdate()

कहने में viewDidLoad()

ध्यान दें कि यदि आप एक स्प्लिट व्यू नियंत्रक, या कुछ अन्य containerदृश्य नियंत्रक का उपयोग करते हैं, तो आपको इसके भेजे जाने पर अपनी कक्षा वापस करने की भी आवश्यकता होती है childViewControllerForStatusBarHidden। ऐसा करने का एक तरीका यह है कि कहने के लिए एक सार्वजनिक कमजोर संस्करण है statusController, और इसे इस ओवरराइड विधि में वापस कर दें।


1
शीर्ष ब्लॉक iOS8 में पदावनत है - अपने दूसरे दृष्टिकोण का उपयोग करें। और धन्यवाद! मैंने एक और अनिवार्य कॉल जोड़ने के लिए कोड को संपादित किया।
डेविड एच

5

iOS 9 आगे:

जैसा कि statusBarHiddenविधि iOS9 से पदावनत किया गया था, आपको नीचे दिए गए अनुसार दो मान जोड़ने होंगे:

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

या उपयोगकर्ता इंटरफ़ेस द्वारा कृपया छवि के नीचे देखें:

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

के रूप में statusBarHiddenकिया जाता है पदावनत से iOS9 :

@property (readwrite, nonatomic, getter = isStatusBarHidden) BOOL statusBarHidden NS_ DEPRECATED _IOS ( 2_0 , 9_0 , "का उपयोग करें - [UIVCController prefersStatusBarHidden]") __TVOS_PROHIBITED;


5

स्विफ्ट 3+ के लिए फिक्स्ड सॉल्यूशन (iOS 9, 10)

1- जानकारी में। संपत्ति के नीचे सेट करें

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

2- रूट कंट्रोलर को कोड के नीचे पेस्ट करें, को

 private var isStatusBarHidden = true {
        didSet {
            setNeedsStatusBarAppearanceUpdate()
        }
    }

    override var prefersStatusBarHidden: Bool {
        return isStatusBarHidden
    }

आप कॉल कर सकते हैं isStatusBarHidden = trueऔर isStatusBarHidden = falseजहां आप hide/showस्टेटस बार करना चाहते हैं


4

आपको यह मान प्लिस्ट में जोड़ना चाहिए: "नियंत्रक-आधारित स्थिति बार उपस्थिति देखें" और इसे "NO" पर सेट करें।


4

IOS में छिपाने की स्थिति पट्टी के लिए चरण
AppDelegate.m फ़ाइल खोलें , application.statusBarHidden को didFinishLaunchingWithOptions विधि में जोड़ें

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    application.statusBarHidden = YES;
    return YES;
    }
  1. खुली जानकारी।प्लिस्ट और सेट करें

View controller-based status bar appearance सेट NO


4

स्विफ्ट 5

IOS स्थिति पट्टी को छिपाने के लिए निम्नलिखित चरणों का उपयोग करें:

  1. Info.plist पर खोलें।
  2. नई कुंजी देखें नियंत्रक-आधारित स्थिति बार उपस्थिति और मान सेट करें NO पर
  3. नई कुंजी स्थिति पट्टी जोड़ें प्रारंभ में छिपा हुआ है और हां में सेट है ।
  4. परियोजना को फिर से संकलित करें।
  5. आईओएस फोन पर अब स्टेटस बार छिपाना चाहिए।

अंतिम सेटिंग्स स्क्रीनशॉट:

अंतिम सेटिंग्स

यह Xcode 10.2 पर काम कर रहा है


2

से UIKit> UIApplication.h:

// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);

इसलिए View controller-based status bar appearanceNO पर सेट होना चाहिए


2

सुसिता के प्रश्न का उत्तर देने के लिए: setNeedsStatusBarAppearanceUpdate का उपयोग करें । यह आपके पसंदीदा स्टेटस बार स्टेट के साथ रीफ्रेश करने के लिए कॉल करेगा। इसे इस्तेमाल करे:

    @property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early

    - (BOOL)prefersStatusBarHidden {
        return self.isHideStatusBar;
    }

    - (void)someMethod {
    // triggered by an event or user action
    [self setHideStatusBar:YES];
    [self setNeedsStatusBarAppearanceUpdate];
    }

यदि आप फिर से स्टेटस बार देखना चाहते हैं, तो अपनी संपत्ति को छिपाने के लिए सेट करें (या जिसे आप इसे कहते हैं) NO। एक और कॉल करने से अप्रत्यक्ष रूप से पसंद करते हैं

[self setNeedsStatusBarAppearanceUpdate]

1

स्विफ्ट 3 के लिए अपडेट:

अद्यतन Info.plist निम्नलिखित जानकारी के साथ:

View controller-based status bar appearance: NO

फिर, एक ViewController या कहीं और:

UIApplication.shared.isStatusBarHidden = true

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