IOS7 में स्टेटस बार को छिपा नहीं सकते


267

मैंने अभी अपने iPhone 5 iOS 7 को चार बीटा संस्करण में अपग्रेड किया है। अब जब मैं इस iPhone पर Xcode 5 से अपना ऐप चलाता हूं, तो स्टेटस बार नहीं छिपता, भले ही यह होना चाहिए।

काम नहीं कर रहा:

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

काम नहीं कर रहा:

[UIApplication sharedApplication].statusBarHidden = YES;

Apple डेवलपर फ़ोरम में लॉगिन नहीं कर सकते


15
असत्य, मेरे जवाब में Xcode शामिल है और इसे आम जनता को दिखाया गया है। यह कहना सामान्य है कि 'यदि आप इसका उत्तर देते हैं, तो यह एनडीए का उल्लंघन है' .. डेवलपर्स को यह निर्णय लेने दें;;
जेक


प्रोग्राम बार को विशेष रूप से ViewController को छिपाने के लिए कैसे?
भाविक

जवाबों:


558

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

ध्यान दें कि यह केवल काम नहीं करता है, यदि आप ऐप में UIImagePickerController का उपयोग कर रहे हैं।

से http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/ , mgiroux के समाधान

Xcode में अपनी जानकारी सेटिंग्स में व्यू बेस कंट्रोलर को जोड़ने वाला एक उदाहरण


3
गजब का! मैं इस पर घंटे बर्बाद! धन्यवाद!
इदं

12
संदर्भ के लिए, वास्तविक Info.plist फ़ाइल में संग्रहीत कच्चे मूल्य को कहा जाता है UIViewControllerBasedStatusBarAppearance
एडम रोसेनफील्ड

55
इस दृष्टिकोण के साथ एकमात्र समस्या यह है कि यदि आप छवियों का चयन करने के लिए UIImagePickerController का उपयोग करते हैं तो यह स्थिति पट्टी को एक बार फिर से प्रदर्शित करने के लिए मजबूर कर देगा। इसे रोकने के लिए केवल निश्चित रूप से आग लगाने का तरीका है कि आप अपने प्रत्येक दृश्य नियंत्रकों में प्रीफरस्टैटसबर्हेड विधि को लागू करें और UIViewControllerBasedStatusBarAppearance को रीसेट करें। सच होने के लिए सेटिंग।
जेसन फ़ुरस्टनबर्ग

5
मैं वास्तव में नहीं जानता कि Apple ने इसे क्यों बदला है! धन्यवाद :)
मोहम्मद अमीन

18
आपको YES पर सेट Status bar is initially hiddenकरने की भी आवश्यकता है ।
जोरायर

277

अपने दृश्य नियंत्रक में विधि जोड़ें।

- (BOOL)prefersStatusBarHidden {
    return YES;
}

35
उन सभी को देखने के लिए, यह ऐसा करने का तरीका है यदि आप कुछ दृश्यों में स्टेटस बार को गतिशील रूप से निकालना चाहते हैं। यह विधि इस बात पर ध्यान दिए बिना काम करती है कि आपने अपनी स्थिति में "कंट्रोलर-आधारित स्टेटस बार उपस्थिति" सेट किया है!
श्री टी।

2
+1 b / c मैं स्थिति बार को गतिशील रूप से दिखाने / छिपाने की क्षमता की तलाश कर रहा हूं। पी-सूची सेटिंग विधि (ऊपर @Satgi द्वारा पोस्ट देखें) हालांकि वैश्विक स्तर पर स्थिति पट्टी को दिखाने / छिपाने का सबसे अच्छा तरीका है।
जॉनीबी

यदि आपके पास एक फोटो गैलरी है, तो आप आमतौर पर केवल नियंत्रणों को वहां छिपाना चाहते हैं, और आप इसे चालू / बंद भी कर सकते हैं। यह मेरे लिए काम नहीं करता है, फ़ंक्शन को भी नहीं बुलाया जाता है। मेरे पास एक ही जगह पर एक
पसंदीदास्टारसस्टाइल

4
@ Mr.T iOS 8 में, अब ऐसा नहीं लगता है। यदि आपने दृश्य नियंत्रक आधारित स्थिति पट्टी उपस्थिति को NO पर सेट किया है और दृश्य नियंत्रक से सही लौटा है prefersStatusBarHidden, तो यह काम नहीं करेगा। स्थिति पट्टी अभी भी दिखाई देती है।
इसुरु

1
@ इस्सु ने आपको नो सेट क्यों दिया? यदि आप हाँ में सेट करते हैं तो यह हर दृश्य नियंत्रक से पूछेगा कि निश्चित रूप से यह अन्य मामले में नहीं होगा।
invoodoo

84

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

-> Status bar is initially hidden= हाँ

-> View controller-based status bar appearance= नहीं

दोनों को जोड़ें - अब स्टेटस बार गायब हो जाएगा।


हाँ, यह मेरे लिए भी काम किया। "स्टेटस बार शुरू में छिपा हुआ है" सेट किए बिना हां में विकल्प के रूप में इसकी अपेक्षा के अनुरूप काम नहीं कर रहा है। धन्यवाद।
एंड्रयूशिग

53

एकल दृश्य पर स्थिति पट्टी छिपाने के लिए, आपको उपयोग करना चाहिए:

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

सबसे पहले, यह मेरे लिए काम नहीं करता था, और फिर इस पद्धति के प्रलेखन में एक कहा गया है कि: // स्टेटस स्थिति सेट करना यदि आपके एप्लिकेशन को डिफ़ॉल्ट UIViewController- आधारित स्थिति बार सिस्टम का उपयोग कर रहा है, तो कुछ भी नहीं करता है।

यह plist फ़ाइल पर किया जाना है, कुंजी View controller-based status bar appearanceसेट को जोड़ने के लिए NO। और फिर इसने काम किया।


16

स्टेटस बार को छिपाने / दिखाने के लिए विरासत UIApplication पद्धति का उपयोग करने के लिए, आपके ऐप को iOS 7 के लिए एक महत्वपूर्ण मान सेट करना होगा:

View-Controller Based Status Bar Appearance = NO

यह मान डिफ़ॉल्ट रूप से हाँ में सेट है। यदि आप इसे NO में बदलते हैं, तो आप विरासत विधियों का उपयोग कर सकते हैं। यदि आप इसे YES पर सेट करना छोड़ देते हैं, तब भी आप स्टेटस बार को छिपा सकते हैं, लेकिन यह आपके ऐप में प्रत्येक व्यू कंट्रोलर उपवर्ग को ओवरराइड prefersStatusBarHiddenकरने के लिए है : YES को वापस करने के लिए।

किसी भी समय आपके ऐप को बदलने के लिए स्टेटस बार उपस्थिति या दृश्यता की आवश्यकता होती है, और व्यू-कंट्रोलर बेस्ड स्टेटस बार अपीयरेंस YES पर सेट होता है, आपके सबसे बाहरी व्यू कंट्रोलर को कॉल करने की आवश्यकता होती है:

setNeedsStatusBarAppearanceUpdateAnimation


मुझे कस्टम आईओएस टार्गेट प्रॉपर्टीज में आवेदन करना पड़ा है, क्योंकि सामान्य तौर पर
प्लिस्ट

16

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

  1. अनुपयुक्त: (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsलिखना

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

    View-Controller Based Status Bar Appearance = NO

2
बस इसे साफ करने के लिए, अगर आप इसे अंदर डाल रहे हैं [application setStatusBarHidden:YES];application.statusBarHidden = YES;
तोफिन

ऊपर उत्तर में एक टाइपो हो सकता है। "व्यू-कंट्रोलर बेस्ड स्टेटस बार अपीयरेंस = NO" ने मेरे लिए काम नहीं किया, लेकिन "कंट्रोलर-बेस्ड स्टेटस बार उपस्थिति = NO" ने भी काम किया। "
tmr

11

इस मुद्दे के लिए बहुत सारे संयोजन सुझाए गए हैं, लेकिन समस्या यह है कि iOS 6 और 7 स्टेटस बार को छिपाने के लिए विभिन्न तरीकों का उपयोग करते हैं। मैं iOS 7 पर iOS6- शैली के व्यवहार को सक्षम करने के लिए प्लिस्ट सेटिंग्स को स्थापित करने में कभी सफल नहीं रहा, लेकिन यदि आप iOS 6+ का समर्थन करने के लिए अपने ऐप का निर्माण कर रहे हैं, तो आपको किसी विशेष दृश्य नियंत्रक की स्थिति को सुनिश्चित करने के लिए एक बार में 3 विधियों का उपयोग करने की आवश्यकता है बार:

// for ios 7 
- (BOOL)prefersStatusBarHidden{
    return YES;
}

// for ios 6
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // explicitly set the bar to show or it will remain hidden for other view controllers
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

यह आपके plist सेटिंग्स की परवाह किए बिना काम करना चाहिए।


7

मुझे स्थिति बार छिपाने के लिए नीचे दोनों परिवर्तन करने थे:

इस कोड को उस व्यू कंट्रोलर में जोड़ें जहां आप स्टेटस बार को छिपाना चाहते हैं:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

इसे अपनी .plist फ़ाइल में जोड़ें (अपनी एप्लिकेशन सेटिंग में 'जानकारी' पर जाएं)

View controller-based status bar appearance --- NO

फिर आप स्टेटस बार को छिपाने के लिए इस लाइन को कॉल कर सकते हैं:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

6

बस इन 2 लाइनों को info.plist फ़ाइल में जोड़ें। यह iOS7 और पुराने संस्करण दोनों के लिए फिक्स कर देगा।

  • स्थिति पट्टी शुरू में छिपी हुई है = हाँ
  • नियंत्रक-आधारित स्थिति बार उपस्थिति देखें = नहीं

प्रोजेक्ट पर नेविगेट करें और लक्ष्य चुनें -> सामान्य और "स्टेटस बार स्टाइल ... एप्लिकेशन लॉन्च के दौरान छुपाएं" चेक बॉक्स को चेक किया जाएगा। यह काम करेगा।


6

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

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

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

4

केवल एक चीज जो मेरे लिए काम करती है, वह है कि आप अपनी मुट्ठी में निम्नलिखित जोड़ दें

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

4

पूरे ऐप में स्टेटस बार को छिपाने के लिए मैंने जो सबसे आसान तरीका ढूंढा है, वह categoryऑन UIViewControllerऔर ओवरराइडिंग है prefersStatusBarHidden। इस तरह से आपको यह विधि हर एक दृश्य नियंत्रक में नहीं लिखनी है।

UIViewController + HideStatusBar.h

#import <UIKit/UIKit.h>

@interface UIViewController (HideStatusBar)

@end

UIViewController + HideStatusBar.m

#import "UIViewController+HideStatusBar.h"

@implementation UIViewController (HideStatusBar)

//Pragma Marks suppress compiler warning in LLVM. 
//Technically, you shouldn't override methods by using a category, 
//but I feel that in this case it won't hurt so long as you truly 
//want every view controller to hide the status bar. 
//Other opinions on this are definitely welcome

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

#pragma clang diagnostic pop


@end

सबसे अच्छा असली, iOS7, गैर-नकली समाधान, महान
Fattie

3
  1. प्लिस्ट ऐड में ----

    नियंत्रक-आधारित स्थिति बार उपस्थिति देखें --- नहीं

  2. प्रत्येक दृश्य में नियंत्रक लिखें

    - (void) viewDidLayoutSubviews
    {
        CGRect viewBounds = self.view.bounds;
        CGFloat topBarOffset = 20.0;
        viewBounds.origin.y = -topBarOffset;
        self.view.bounds = viewBounds;
    
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style
    }

IOS 7 में स्टेटस बार इश्यू के लिए लेकिन ऐप के लिए लक्ष्य 5.1 और उससे अधिक होना चाहिए


3

इस थ्रेड वर्क पर बहुत से उत्तर दिए गए हैं, लेकिन यह मेरी समझ है कि अगर आप कुछ भी गतिशील करने की कोशिश कर रहे हैं तो आपको अंततः कॉल करने की आवश्यकता होगी:

[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];

3

IOS 7 में स्टेटस बार छिपाने के लिए चरण:

1. अपने आवेदन info.plist फ़ाइल के लिए जाओ।

2.और सेट, देखें नियंत्रक-आधारित स्थिति बार उपस्थिति: बूलियन सं

आशा है कि मैंने स्टेटस बार के मुद्दे को हल कर दिया है .....


3

IOS 7 के लिए व्यू व्यूप्लेयर विधि में एकल दृश्य उपयोग में:

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

प्रदर्शन बार उपयोग के लिए:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];


2

जानकारी में Plist फ़ाइल निम्नलिखित संपत्ति के लिए एक पंक्ति जोड़ें

संपत्ति का नाम: नियंत्रक-आधारित स्थिति बार उपस्थिति देखें

मान: नहीं


1

अपने ऐप के रूट व्यू कंट्रोलर में निम्न विधि जोड़ने का प्रयास करें:

- (BOOL)prefersStatusBarHidden
    {
        return YES;
    }

1

मैंने इन सभी विकल्पों को अपने प्रोजेक्ट पर यहां पोस्ट करने की कोशिश की और वे काम नहीं करेंगे। मैंने सोचा कि यह इस तथ्य से हो सकता है कि मैंने अपने अपडेट को अपडेट किया था Xcodeऔर फिर आईओएस 7 और कुछ सेटिंग्स को कहीं न कहीं गड़बड़ कर दिया था। मैंने तय किया कि इसके लिए एक पूरी तरह से नई परियोजना का निर्माण करना है और सरल बस सेटिंग के बाद: " Status bar is initially hidden = YES" और " View controller-based status bar appearance = NO" जैसा कि कई अन्य लोगों ने कहा है कि यह सही तरीके से काम किया (यानी कोई स्थिति पट्टी नहीं)।

इसलिए मेरी सलाह अगर आप एक ऐसे प्रोजेक्ट पर काम कर रहे हैं जिसे पुराने वर्जन से iOS 7 में अपडेट किया गया है और कोशिश की है कि नए प्रोजेक्ट का निर्माण करें।


मैंने शुरुआत में यह पुष्टि करने के लिए कि मैं हर स्क्रीन के लिए स्टेटस बार छिपा सकता था, लेकिन जैसा कि मेरा ऐप काफी "टाइम-केंद्रित" है, मैं ज्यादातर स्क्रीन के लिए टाइम डिस्प्ले चाहता था। यह केवल एक स्क्रीन है जिसे मैं विभिन्न कारणों से बाहर करना चाहता था। मैंने आपके मापदंडों के विपरीत का उपयोग करके समाप्त किया: शुरू में छिपा हुआ = NO और VC- आधारित स्थिति बार उपस्थिति = YES। तब मुझे (वीओएल) प्रेफरस्टैटसबर्हिड विधि (यस लौटना) को एक वीसी में डालना पड़ा, जहां मैं चाहता था कि यह छिपा हो। अच्छी तरह से काम करता है। मुझे यह जोड़ना चाहिए कि मेरा ऐप iOS7-केवल अन्य कारणों से है।
बोब्समल्स

1

2019 के लिए ...

NO स्टेटस बार के साथ एक ऐप बनाने के लिए,

Info.plist पर क्लिक करें, "पंक्ति जोड़ें" पर राइट-क्लिक करें।

इन दोनों को इन सेटिंग्स के साथ जोड़ें:

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

यही सब है इसके लिए।




0

विशिष्ट दृश्य नियंत्रक के लिए स्थिति पट्टी को छिपाने के लिए

- (BOOL)prefersStatusBarHidden {
    return YES;
}

आवेदन के लिए स्टेटस बार हिडन सेट करने के लिए:

  • सेट View controller-based status bar appearanceकरने के लिए NO.plist में और में application: didFinishLaunchingWithOptions:सेट: [application setStatusBarHidden:YES];

    नोट: setStatusBarHidden: पदावनत

या

  • परियोजना सेटिंग्स में -> सामान्य टैब -> तैनाती जानकारी

    चेक Hide Status barबॉक्स।


-1
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
application.statusBarHidden = YES;
return YES;
}

प्रश्न स्पष्ट रूप से उल्लेख करता है कि यह दृष्टिकोण काम नहीं करता है। कृपया, उत्तर देने से पहले प्रश्न को ध्यान से पढ़ें।
बोरिस वेर्बस्की

जब तक दृश्य नियंत्रक-आधारित स्थिति बार उपस्थिति NO पर सेट है, तब तक यह सबसे स्वच्छ दृष्टिकोण है।
इवान इस्च

-7

मुझे यकीन नहीं है कि आप "Apple डेवलपर फ़ोरम में प्रवेश क्यों नहीं कर सकते", लेकिन (NDA का उल्लंघन किए बिना) आप अपने स्टेटसबार को Xcode के माध्यम से भी छिपा सकते हैं। यह आपके एप्लिकेशन लक्ष्य पर एक सामान्य सेटिंग है।यहां छवि विवरण दर्ज करें


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