स्टेटस बार गायब नहीं होगा


112

मैं एक एप्लिकेशन बना रहा हूं और मैं स्टेटस बार को छिपाना चाहता हूं। जब मैं एप्लिकेशन का परीक्षण करता हूं, तो स्प्लैश स्क्रीन दिखाए जाने के दौरान स्टेटस बार छिपा होता है, लेकिन एक बार ऐप पूरी तरह से लोड हो जाने के बाद, स्टेटस बार फिर से दिखाई देता है।

मैं Xcode 5 और iOS 7 का उपयोग कर रहा हूं, और प्रोग्राम बार को स्थिति को अक्षम करने का प्रयास किया है

  ([[UIApplication sharedApplication] setStatusBarHidden:YES    
      withAnimation:UIStatusBarAnimationFade];),

info.plist फ़ाइल में, और .xib फ़ाइल पर गुण निरीक्षक का उपयोग करना। कुछ भी काम नहीं आता।

कोई विचार?

जवाबों:


220

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

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

2
यह विश्व स्तर पर कैसे करें?
jjxtra

16
इसके अलावा, जैसा कि Apple डॉक्स में कहा गया है, आपको [self setNeedsStatusBarAppearanceUpdate];इस विधि को कॉल करने के बाद डिफ़ॉल्ट मान (डिफ़ॉल्ट मान नहीं है) के अलावा किसी अन्य चीज से कॉल करना चाहिए ।
मैंडरस सेप

3
@PychoDad अधिक वैश्विक समाधान के लिए मेरे उत्तर की जाँच करें।
इदं

2
पूर्ण धन्यवाद। मैं अभी यह पता नहीं लगा सकता कि iOS 7 ऐसा क्यों कर रहा है और XIBs का सम्मान नहीं कर रहा है जिसमें NO स्टेटस बार सेटिंग्स नहीं हैं!
justinhartman

1
स्टैक में जोड़े गए व्यू-कंट्रौलर पर इसे जोड़ना मुझे उस व्यू-कंट्रौलर में स्थित स्थिति को छिपाने के लिए आवश्यक है; जब यह दृश्य नियंत्रण हटा दिया जाता है, तो स्टेटबार वापस आ जाता है।
मैकडी

126

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

यह आपको स्टेटस बार को हिडन मोड में सेट करने में सक्षम करेगा । यह इसे अन्य प्रदान किए गए उत्तरों के विपरीत एक वैश्विक सेट करता है।

अद्यतन: यदि आप चाहते हैं कि स्थिति पट्टी छप स्क्रीन पर छिपी हो, तो टारगेट बार के विकल्पों पर " एप्लिकेशन लॉन्च के दौरान छिपाएं " चिह्नित करना न भूलें । इसके अलावा, आप " स्टेटस बार शुरू में छिपा हुआ है " को " वाईईएस " प्लेजर पर जोड़ सकते हैं यदि आप इसे ऐप के अंदर कोड के साथ नहीं करना चाहते हैं।


2
यह जानने के लिए मुझे बहुत समय लगा। यह एक ऐसी समस्या है जो मुझे लगता है कि हर किसी के पास होगी और Apple ने इसका पर्याप्त उल्लेख नहीं किया। मदद करने के लिए खुश ...
इदं

7
ठीक काम करता है, यस के लिए "स्टेटस बार शुरू में छिपा हुआ है" के लिए .plist मान सेट करना न भूलें।
andreas-supersmart

1
वाह, यह केवल एक चीज थी जो कोबोल्ड 2 डी 2.1.0 और आईओएस 7 के साथ काम करती थी, बहुत बहुत धन्यवाद!
बिनेरियन

5
Apple वास्तव में पिछड़े संगतता के चैंपियन नहीं हैं। चलो सभी अपनी बांसुरी पर नाचते हैं और हमारे हर एक ऐप को अपडेट करते हैं। क्षमा करें, निराशा को बाहर निकालना। एप्पल द्वारा कारण।
हेनरिक एरलैंडसन

1
अंत में यह मेरे लिए काम करता है। क्योंकि - (BOOL) मॉडलव्यू में काम नहीं करने वाली विधि पसंद करता है।
उत्कल पटेल

73

आपके द्वारा पोस्ट किया गया कोड iOS 6.1 और उससे नीचे के लिए काम करता है। IOS 7 के लिए, Apple ने प्रत्येक दृश्य के लिए स्टेटस बार को सीधे नियंत्रित करने के लिए नए तरीके उपलब्ध कराए हैं। अपने Info.plist में इस विकल्प को बंद करने से आप कम से कम वर्तमान डेवलपर पूर्वावलोकन (4) के लिए, स्थिति बार को छुपा सकेंगे।

इसे जोड़ें और NO पर सेट करें

संदर्भ के लिए, कृपया ऐप्पल के डेवलपर पोर्टल पर उपलब्ध iOS 7 संक्रमण गाइड पर एक नज़र डालें।


3
मेरी राय में, यह उत्तर बेहतर है क्योंकि मेरे ऐप में, मैं केवल लैंडस्केप मोड में स्टेटस बार छिपाना चाहता हूं, धन्यवाद!
बेटा गुयेन

धन्यवाद यह मेरी मदद करता है क्योंकि मैं इसे अपने पूरे ऐप के लिए छिपाना चाहता हूं
किविनल

2
मेरी राय में, यह उत्तर सबसे अच्छा उत्तर होना चाहिए -> इसे यहाँ समझाया गया है। developer.apple.com/library/prerelease/ios/documentation/…
marceloquinta

5
मैंने ऐसा किया है, लेकिन ऐसा लगता है कि यह सिर्फ स्टेटस बार छिपा हुआ है, हालांकि, मेरे ऐप को अभी भी 'पुश डाउन' किया गया है कि स्टेटस बार कितनी जगह लेगा, और मैं अभी भी बैटरी इंडिकेटर देख सकता हूँ!
vedran

36

अच्छी तरह से मैं अपने सभी ऐप में और "ऐप" -info.plist में स्टेटस बार को छिपाने की कोशिश करता हूं और "सूचना संपत्ति सूची" में दो पंक्तियों को जोड़ता हूं। मैं "कंट्रोलर-आधारित स्टेटस बार उपस्थिति" सेट नो और इन में जोड़ता हूं। स्टेटस बार शुरू में छिपाया जाता है "सेट YES और मेरे लिए काम करता है n_n '

जानकारी


2
यह आपके ऐप को एक कम्पैटिबिलिटी मोड में पूरी तरह से डिज़ाइन करता है, जो पुराने ऐप को iOS 7 पर चलाने के लिए बनाया गया है, जब डेवलपर्स के पास चीजों को करने के नए तरीके के लिए ऐप को ठीक करने का समय नहीं है। इसके बजाय, आपको अपने दृश्य नियंत्रकों में पसंद * विधियों को लागू करने की आवश्यकता है।
लुननाथ

17

हालाँकि, यदि आप UIImagePicker का उपयोग करते हैं, तो स्टेटस बार फिर से दिखाई देता है।

उस स्थिति में, आपको नीचे दी गई स्थिति पट्टी को छिपाना चाहिए,

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }

2
मैं एक ही मुद्दा रहा हूँ। जब तक मैं UIImagePicker का उपयोग नहीं करता है तब तक स्थिति पट्टी छिपी रहती है। मैंने आपके समाधान की कोशिश की और यह मेरे लिए काम नहीं कर रहा है। क्या मुझे आपके पोस्ट में कोड के अलावा कुछ भी जोड़ने की आवश्यकता थी?
देव ०

@WootWoot मैंने भी जोड़ा - (BOOL) प्रीफरेंसटसबर्हेड {रिटर्न YES; } नियंत्रकों को देखने के लिए। कृपया इसे आजमाएँ।
alones

मेरे लिए काम नहीं कर रहा है .. क्या आपको वास्तव में फोन करना चाहिए setNeedsStatusBarAppearanceUpdate?
रयानएम

मुझे एक बटन क्लिक पर स्टेटस बार छिपाने की आवश्यकता है। मैंने नीचे कोड की कोशिश की है, लेकिन यह काम नहीं किया। क्या कोई मेरी सहायता कर सकता है। [[UIApplication sharedApplication] setStatusBarHidden: YES];
जानतीशन

8

कुछ लंबे खोज के बाद, मुझे आखिरकार एक बहुत ही सरल समाधान मिला, जो UIImagePickerControllerसमस्या का ध्यान रखता है।

जैसा कि अन्य उत्तरों में उल्लेख किया गया है, अपने AppDelegate didFinishLaunching में छिपी अपनी स्थिति पट्टी सेट करें, और NO के लिए "नियंत्रक-आधारित स्थिति पट्टी उपस्थिति देखें" सेट करें।

फिर, अपने AppDelegate में:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

et voila - UIImagePickerController सबसे आगे होने पर भी आपका स्टेटस बार छिपा रहेगा।

यह 'रीहाइडिंग' से बेहतर है कि आप हर बार UIImagePickerController प्रस्तुत करें क्योंकि यह पूरे ऐप में छिपा रहता है।


2
हालांकि कुछ अभी भी iPad7 में iOS7 में कुछ टूटा हुआ लगता है - UIImagePickerController अभी भी एक स्थिति पट्टी को दूसरी बार दिखाती है कि यह दिखाया गया है ... Hurrrr ... :-( वर्तमान में मैं appDelegate का उपयोग कर रहा हूं साथ ही हर दृश्य में फिर से छुपा रहा हूं। । भले ही यह थोड़ी देर के लिए गंदा लग रहा हो, फिर से जल्दी ठीक हो जाता है।
ikuramedia

1
यह एकमात्र तरीका है जो मेरे लिए iOS8 पर काम करता है ... किसी भी तरह से पसंद किया जाता हैबर्सहेड को मेरे व्यू कंट्रोलर पर कॉल नहीं किया जाता है।
मोजुबा

7

किसी विशेष UIViewController पर स्थिति पट्टी को छिपाने के लिए, बस इसे जोड़ें:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

उम्मीद है की यह मदद करेगा !


!! यह वह समाधान है जो मेरे लिए iOS 9.2 में काम करता है, प्लिस्ट को संशोधित करने का कोई प्रभाव नहीं था।
माइको

5

आप प्रोजेक्ट सारांश से छिपा सकते हैं। लॉन्च के दौरान एक चेकबॉक्स छिपा होता है।

स्नैपशॉट देखें

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


4

मुझे इसका हल मिल गया। यह एक सम्मोहन की तरह काम करता है। इस कोड को अपने viewcontroller पर लिखें जिसे आप UIImagePickerController का उपयोग करना चाहते थे।

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

3

ऊपर दिए गए एलोन्स के उत्तर के अलावा, इमेजपाइकरकंट्रोलरडीडसेल विधि को लागू करना सुनिश्चित करें और वहां भी वही कोड जोड़ें।


2

मैं UIImagePicker के साथ भी मुद्दे रख रहा था। अलोंस जवाब के समान, मेरा समाधान निम्नलिखित था। मैंने इस लाइन या कोड को जोड़ा:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

इस समारोह के लिए:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

मैंने आईओएस 6 या पुराने के साथ इसका परीक्षण नहीं किया है, लेकिन यह आईओएस 7 में बहुत अच्छा काम करता है।


2

स्विफ्ट समाधान

बस इसे अपने दृश्य नियंत्रकों में जोड़ें:

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

0

मैं Xcode 6 का उपयोग कर रहा हूं, यह समाधान मेरे लिए iOS 7 और 8 पर काम करता है:

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

दूसरा, AppDelegate में, इसे जोड़ें:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

0

मेरी समस्या यह थी कि मैंने नियंत्रक नियंत्रक का उपयोग किया। केवल सबसे ऊपरी दृश्य नियंत्रक, जिसे उदाहरण के लिए नेविगेशन नियंत्रक में एम्बेड किया गया है, स्थिति पट्टी को छिपा या दिखा सकता है।

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