2013-05-16 4 views
8

मैं स्थिति पट्टी की ऊंचाई प्राप्त करने के लिए निम्नलिखित कोड का उपयोग किया गया:statusBarFrame.height रिटर्न 1024.0 जब लैंडस्केप (आईपैड) में

[UIApplication sharedApplication].statusBarFrame.size.height

यह पोर्ट्रेट मोड में पूरी तरह से काम करता है और उम्मीद मान देता है (20.0), लेकिन जब एप्लिकेशन लैंडस्केप में है, तो मुझे 1024.0 का अप्रत्याशित मान मिलता है !!

क्या कोई मेरे लिए इस पर कोई प्रकाश डालने में सक्षम है?

iOS संस्करण 6.1.3

XCode संस्करण 4.6.2

उत्तर

10

निर्दिष्ट करें कि आपको लैंडस्केप अभिविन्यास पर [UIApplication sharedApplication].statusBarFrame.size.width का उपयोग करने की आवश्यकता हो सकती है। [[UIScreen mainScreen] applicationFrame] के समान लैंडस्केप ओरिएंटेशन

+0

है 'ऊंचाई' की आवश्यकता है, 'ऊंचाई' की आवश्यकता है, क्योंकि 'ऊंचाई' समान है? –

+2

हाय, खेद है कि सिर्फ टिप्पणी देखी गई ... सुनिश्चित नहीं है कि जब आप कहते हैं कि "ऊंचाई समान है" तो आप क्या कहेंगे। अभिविन्यास महत्वपूर्ण है, क्योंकि स्थिति बारफ्रेम स्क्रीन-निर्देशांक के अंदर फ्रेम का उपयोग करता है। चित्र पर, ऊंचाई आपको 20 देगी लेकिन परिदृश्य पर यह चौड़ाई है जो मूल्य @ ओली खोज कर रही है। –

+0

स्टेटस बार की ऊंचाई दोनों ओरिएंटेशन में समान है। केवल चौड़ाई बदलती है। –

-1

साफ अपने कोड निर्माण और जाँच करें कि क्या orientationChange तरीकों कहा जाता है। कृपया आईओएस संस्करण के साथ-साथ

+0

मैंने पहले से ही एक स्वच्छ निर्माण की कोशिश की है, और अभिविन्यास बदलें विधि निश्चित रूप से प्राप्त होती हैं बुलाया। मैंने आईओएस संस्करण (6.1.3) – Ollie

+0

@ ओली दिखाने के लिए मूल पोस्ट संपादित किया है: फिर 'एक्सकोड' को पुनरारंभ करने या निम्न संस्करण के साथ निर्माण करने का प्रयास करें। –

+0

यह एक्सकोड के संस्करण का मामला नहीं था या एक साफ निर्माण की आवश्यकता नहीं थी। लक्षण मेरी अन्य परियोजनाओं में मौजूद थे और मेरे सहयोगी भी परियोजनाएं करते थे। यह अपने आप का प्रयास करें। तमारा बर्नाड का सही समाधान – Ollie

4

पर स्विच किए गए मान देता है यह पूरी तरह से सही है। statusBarFrame स्क्रीन निर्देशांक में है। आपको यह जांचने के लिए statusBarOrientation का उपयोग करना होगा कि आपको निर्देशांक स्विच करना चाहिए या नहीं।

+0

यह उत्तर सही है, और मैंने इसे आवश्यक चीज़ों के लिए तमारा बर्नाड के जवाब के साथ संयोजन के रूप में उपयोग किया। बहुत धन्यवाद – Ollie

1

ऐप में किस बिंदु पर आपको यह मिलता है? यदि यह पहले पर चलता है, तो जांचें कि आपकी .xib फ़ाइलें प्रोजेक्ट में किस अभिविन्यास में हैं। यदि वे चित्र में हैं तो भले ही ऐप परिदृश्य में शुरू हो गया हो, फिर भी इसमें अभिविन्यास निर्धारित करने और .xib के आयामों का उपयोग करने का समय नहीं है, जिससे यह सामने के दृश्य नियंत्रकों को देख रहा है।

iOS 6 में रोटेशन से निपटने और अभिविन्यास का पता लगाने iOS 5 से काफी बदल गया है और कम, मैं Beleive कि आप इन मूल्यों के लिए स्थिति पट्टी के उन्मुखीकरण पर नहीं रह गया है भरोसा कर सकते हैं।

this may help

+0

यह एक अच्छी व्याख्या है कि तमारा का जवाब क्यों काम करता है। –

13

उपयोग यह आपके उन्मुखीकरण के बारे में भूल करना चाहते हैं या निर्देशांक यदि संबंधित समस्याओं:

float statusBarHeight = MIN([UIApplication sharedApplication].statusBarFrame.size.height, [UIApplication sharedApplication].statusBarFrame.size.width); 
1

आप उन्मुखीकरण के लिए जाँच करने के लिए, बस के लिए UIView सुविधाजनक विधि का उपयोग की जरूरत नहीं है फ्रेम को परिवर्तित करना:

CGRect statusBarFrame = [self.view convertRect:[[UIApplication sharedApplication] statusBarFrame] fromView:self.view.window]; 
+0

इस स्निपेट द्वारा लौटाए गए फ्रेम की ऊंचाई तक पहुंचने से अन्य उत्तरों के समान ही प्रदर्शन होता है, लेकिन यह वर्णन करता है कि क्या और अधिक स्पष्ट रूप से हो रहा है। +1 –

संबंधित मुद्दे