2014-10-23 7 views
5

आईओएस 8 के बाद से मेरा ऐप काफी अच्छा चलता है, लेकिन मुझे इस ऐप का परीक्षण करते समय समस्या मिली। यह केवल आईपैड पर होता है और केवल तभी जब मैं ऐप को लैंडस्केप मोड में लॉन्च करता हूं। अगर यह पोर्ट्रेट में लॉन्च होता है तो सब ठीक है (कोई रोटेशन समस्या नहीं है)। अगर मैं डिवाइस (सिम्युलेटर या असली डिवाइस) घुमाता हूं तो दृश्य स्क्रीन से घूमता है और वास्तविक दृश्य का कट दिखाता है और शेष काला होता है।क्या यह एक आईओएस 8 बग है (रोटेशन पर अभिविन्यास मुद्दा)?

enter image description here

enter image description here

कोई और इस तरह के एक बग देखा? मेरे द्वारा यह कैसे किया जा सकता है?

+1

चित्र दिखाई दे रहे बिना, आप क्या वर्णन के आधार पर मेरी प्रारंभिक प्रतिक्रिया है कि आप शायद अपने ऑटो लेआउट बाधाओं के साथ एक मुद्दा है। जब आप घूमते हैं तो समस्या दूर हो जाती है तो परिदृश्य पर वापस जाएं? – squarefrog

+0

यदि मैं इसे परिदृश्य में लॉन्च करने के लिए इसे वापस घुमाता हूं, तो दृश्य सही दिखाया गया है, लेकिन अगर मैं इसे बग की तरह बग घुमाता हूं। लेकिन यह तब होता है जब मैं परिदृश्य में ऐप शुरू करता हूं। –

+0

क्या आप किसी तृतीय पक्ष साइट जैसे [imgur] (http://imgur.com) पर अपने स्क्रीन शॉट का लिंक प्रदान कर सकते हैं? आपने क्या ऑटो-लेआउट बाधाएं स्थापित की हैं? – squarefrog

उत्तर

4

समान समस्या था। आश्चर्यजनक रूप से यह तय किया गया था कि Appdelegate पर self.window से संबंधित सभी कोड को टिप्पणी करना था।

स्वयं। विन्डो और इसकी असाइनमेंट की शुरुआत की टिप्पणी की। "प्रारंभिक दृश्य नियंत्रक" चेकबॉक्स की जांच करके विशेषता निरीक्षकों में स्टोरीबोर्ड में प्रारंभिक दृश्य सेट करें।

न्यू बेहतर समाधान
टिप्पणी करते self.window अन्य मुद्दों पैदा कर रहा था। इसके बजाय नीचे कोड सबसे अच्छा है:

- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification 
    { 
     [UIViewController attemptRotationToDeviceOrientation]; 
    } 
+0

यह मेरे लिए इसे ठीक नहीं लगता है, लेकिन मैं एक ही सटीक मुद्दा है। मेरे पास एक ऐप है जो एक दृश्य नियंत्रक को छोड़कर सभी चित्र है जो इसे परिदृश्य में रखता है। अगर मैं घूमता हूं तो दृश्य सभी फंकी हो जाता है। यह आईओएस 8 के साथ किसी भी आकार के आईफोन पर है। – CodyMace

+0

@ कोडीमेस मुझे एक ही सटीक समस्या है। क्या आपने इसे ठीक किया? – doxsi

2
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
BOOL landscape = (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight); 
NSLog(@"Currently landscape: %@, width: %.2f, height: %.2f", 
     (landscape ? @"Yes" : @"No"), 
     [[UIScreen mainScreen] bounds].size.width, 
     [[UIScreen mainScreen] bounds].size.height); 

और परिणाम हैं: आईओएस 8 के लिए

Currently landscape: No, width: 320.00, height: 568.00 
Currently landscape: Yes, width: 568.00, height: 320.00 

और iOS 7-

Currently landscape: No, width: 320.00, height: 568.00 
Currently landscape: Yes, width: 320.00, height: 568.00 

के लिए ऐसा लगता है जिस तरह से ऊंचाई की चौड़ाई में कोई परिवर्तन होता है की तरह आईओएस 8 के बाद से चित्र और परिदृश्य में स्क्रीन को संभाला जाता है।

चेक इस लिंक Is [UIScreen mainScreen].bounds.size becoming orientation-dependent in iOS8?

2

अद्यतन - हम एक समाधान मिल जाने:

मैं हमारे समस्या का जवाब है जो नीचे बताए गए तरीके तुम्हारा के रूप में बिल्कुल वैसा ही दिखाई पाया। स्क्रीन के बहुत दूर दाईं ओर टैप करने का प्रयास करते समय हमारे अन्य डेवलपर्स में से एक ने "मुख्य विंडो में अप्रत्याशित शून्य" देखा। इससे मुझे एक नई खोज करने का मौका मिला और मुझे यह धागा स्टैक ओवरफ्लो पर मिला जो वास्तव में हमारी समस्या का उत्तर था।

वास्तविक जवाब Frankish जो main.xib (या मुख्य स्टोरीबोर्ड) खोलने का सुझाव दिया से आया है और कि और बनाने में विंडो पर क्लिक:

(unexpected nil window in _UIApplicationHandleEventFromQueueEvent यहाँ सवाल है जो मेरे इस सवाल का जवाब में मदद के लिए लिंक है) सुनिश्चित करें कि "लॉन्च पर दृश्यमान" और "लॉन्च पर पूर्ण स्क्रीन" गुणों की जांच की गई है (सत्य पर सेट करें।)

हमारे मामले में, यह "लॉन्च पर पूर्ण स्क्रीन" संपत्ति थी जिसे सेट करने की आवश्यकता थी, लेकिन यह उस घूर्णन समस्या को ठीक कर रहा है जिसे हम देख रहे थे और यह एक मुद्दा तय करता है जहां परिदृश्य में आईपैड पर लॉन्च करते समय स्क्रीन के बहुत दूर स्पर्श करने योग्य नहीं था।

अंत अद्यतन - (मूल नीचे गैर जवाब)

मेरा जवाब एक जवाब नहीं है, लेकिन मैं ठीक उसी मुद्दे में चलाने की है। हमारे ऐप में घुमाने पर, जब एक्सकोड 6 के साथ निर्माण करते हैं, तो मुझे इस प्रश्न पर स्क्रीनशॉट के समान सटीक प्रतिपादन समस्या दिखाई देती है। स्थिति के ठीक उसी तरह से नीचे और नीचे काले सलाखों के साथ घूमते हैं। (आईफोन पर हमारा ऐप किसी भी घूर्णन का समर्थन नहीं करता है, इसलिए हमें आईफोन पर समस्या नहीं दिखाई देती है। आईपैड पर हम लैंडस्केप बाएं और लैंडस्केप का समर्थन करते हैं। जब एक से दूसरे में घूमते हैं, तो जब आईपैड मानक रोटेशन एनीमेशन करता है, तो यह एक तरफ जाने पर स्थिति से बाहर घूमता है (काला सलाखों को दिखाता है) और फिर दूसरे समर्थित अभिविन्यास पर वापस जाने पर उचित स्थिति में घुमाएगा। मुझे विश्वास नहीं है कि यह किसी भी कस्टम पोजीशनिंग या एनीमेशन कोड से संबंधित है। यह हर किसी के साथ होता है स्प्लैश स्क्रीन सहित स्क्रीन। यह ऐप्पल स्क्रीन रोटेशन में निर्मित से संबंधित प्रतीत होता है। जाहिर है कि प्रत्येक प्रोजेक्ट में आईओएस में यह समस्या नहीं है लेकिन मैं इस मुद्दे को उत्पन्न करने वाले विवरणों में नहीं आया हूं। मैंने कल पूरे दिन बिताया जारी करें और हमारे कोड के माध्यम से जा रहे हैं और मेरे पास कुछ भी नहीं है।

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

कल इस मुद्दे के बारे में पोस्ट किए गए मेरे अपने प्रश्न का एक लिंक है। (मैं जब तक के बाद मैं अपने प्रश्न पोस्ट था इस सवाल भर में नहीं आया था।)

Building project with Xcode 6 (iOS 8 SDK) causes landscape rotation rendering issue on iPad

+0

हां, यह केवल आईओएस 8 के साथ होता है :) मैंने इसे window.visible = false के साथ तय किया। –

0

मैंने पाया जब मैं अपने आवेदन में एक से अधिक विंडो था यह कोई मुद्दा हो सकता है। -[UIWindow setFrame:] पर ब्रेकपॉइंट सेट करके, मैं देख सकता था कि घूर्णन पर, सिस्टम मुझे मुझे एक गलत फ्रेम आकार और स्थिति दे रहा था। आप अपने फ्रेम को मैन्युअल रूप से बराबर पर सेट करके प्राप्त कर सकते हैं जो कि यदि आप iOS7 + पर चल रहे हैं और Xcode6 के साथ संकलित करते हैं तो यह सही लगता है। मैंने पाया कि -[UIWindow becomeKeyWindow] में यह कर मेरे लिए अच्छी तरह से काम:

- (void)becomeKeyWindow { 
    [super becomeKeyWindow]; 

    self.frame = [UIScreen mainScreen].bounds; 
} 
संबंधित मुद्दे