[प्रश्न अपडेट किया गया]लॉन्च पर इंटरफ़ेस अभिविन्यास का पता लगाने का सही तरीका क्या है?
तो यहां समस्या है, मैंने अंत में इसे कम कर दिया। आप सभी तरीकों
- (id)init;
- (void)loadView;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewDidLoad;
(...)
में एक नया UIViewController बनाते हैं मानक interfaceOrientation पोर्ट्रेट है और अगर लैंडस्केप मोड का पता चला है यह जल्दी है कि उन्मुखीकरण के लिए बारी बारी से होगा। जो तब का उपयोग कर पता लगाया जा सकता:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;
समस्या यह है कि आईपैड पर, यह loadView (या अन्य में से एक) के भीतर मौजूदा इंटरफ़ेस उन्मुखीकरण के लिए अपने इंटरफेस तैयार करने के लिए शांत मुश्किल है है के रूप में यह केवल वापस आ जाएगी पोर्ट्रेट। इससे कुछ समस्याएं पैदा होंगी:
1) मैं चाहता हूं कि मेरी सामग्री पोर्टेट मोड में पुनः लोड हो, लेकिन लैंडस्केप मोड में नहीं। आम तौर पर मैं loadView में एक if कथन रखता हूं। अगर पोर्ट्रेट मोड में, सामग्री पुनः लोड करें। लेकिन इस मामले में यह हमेशा पोर्ट्रेट लौटाएगा और इस तरह हमेशा सामग्री लोड करता है।
2) मैं 'presentPopoverFromRect: inView: allowArrowDirections: एनिमेटेड:' - विधि जब पोर्ट्रेट मोड में उपयोग करना चाहता है तो यह एप्लिकेशन प्रारंभ होने पर स्वचालित रूप से पॉपओवर मेनू पेश करेगा। पोर्ट्रेट मोड में लॉन्च होने पर यह एप्लिकेशन को क्रैश कर देगा। कारण: 'पॉपओवर को ऐसे दृश्य से प्रस्तुत नहीं किया जा सकता है जिसमें खिड़की नहीं है।'
एकमात्र सुरक्षित धारणा 'didRotateFromInterfaceOrientation: (UIInterfaceOrientation) इंटरफेसऑरिएंटेशन से है, लेकिन यह विधि पोर्ट्रेट मोड में लॉन्च होने पर निकाल दी जाएगी।
// ----
अद्यतन (15,37)
'UIApplicationWillChangeStatusBarOrientationNotification'
केवल तैनात किया जाएगा जब परिदृश्य (या vica विपरीत) चित्र से उपयोगकर्ता स्वैप। यदि इंटरफ़ेस समस्या तो यह आसानी से है कि अधिसूचना और
if (UIDeviceOrientationIsPortrait(interfaceOrientation)) {
// layout subviews for portrait mode
} else {
// layout subviews for landscape mode
}
लेकिन समस्या के लिए अवलोकन के साथ हल किया जा सकता था कि मुझे पता है कि जो मोड में लॉन्च में है बल्कि यह निर्धारित करना चाहते हैं या नहीं मैं सामग्री को फिर से लोड करना चाहिए , मैं सामग्री को फिर से लोड नहीं कर सकता और जब यह परिदृश्य में बदल जाता है तो इसे रद्द कर दें।
मैं() 'UIDeviceOrientationIsPortrait के लिए चेक' 'में एक कस्टम' UIView' उपवर्ग के layoutSubviews' और मैं सही झुकाव हो रही है कर की कोशिश की है। क्या आपके पास कुछ और कोड है जिसे आप साझा कर सकते हैं जो समस्या की पहचान करने में सहायता कर सकता है? यह भी सोच रहा है कि क्या UIDeviceOrientation और UIInterfaceOrientation मानों को एक दूसरे के लिए उपयोग किया जा रहा है? इससे पहले मुझे अजीब कीड़े से अटक गया है। – justinkmunger