2013-10-26 5 views
12

मेरा ऐप ऑटोरोटेट कर सकता है लेकिन मुझे केवल पोर्ट्रेट मोड में दिखाने के लिए एक दृश्य की आवश्यकता है और यह नहीं पता कि इसे कैसे प्राप्त किया जाए। मैं इस कोशिश की (अन्य बातों के अलावा), लेकिन विचाराधीन दृश्य अभी भी घूमता है: यदि आप एक मॉडल दृश्य नियंत्रक के रूप में आपके विचार नियंत्रक पेशएक दृश्य नियंत्रक ios7 के लिए autorotate को रोकें?

-(BOOL)shouldAutorotate 
{    
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

उत्तर

6

supportedInterfaceOrientations काम करेंगे। यदि आप इसे नेविगेशन नियंत्रक स्टैक के हिस्से के रूप में प्रस्तुत करते हैं तो यह काम नहीं करेगा। यदि आप चाहते हैं कि आपका दृश्य सामान्य रूप से प्रस्तुत किया गया हो लेकिन नेविगेशन नियंत्रक के अंदर (उदाहरण के लिए नेविगेशन आइटम, उदाहरण के लिए) मैंने जो समाधान किया था वह UINavigationController उप-वर्ग करना था और मेरे सबक्लास पर supportedInterfaceOrientations विधियों को ओवरराइड करना था।

+0

क्या आपके समाधान को दिखाने वाला कुछ कोड जोड़ना संभव होगा? – rkh

+0

@rkh आपको एक उप-वर्ग बनाने के लिए कोड की आवश्यकता है जो एक फ़ंक्शन को ओवरराइड करता है? –

+0

नहीं, मैं सिर्फ "कोड में" विक्टर को अपने समाधान की व्याख्या करना चाहता था क्योंकि वह एक नए उपयोगकर्ता की तरह लगता है ... मैं अच्छा हूं :) – rkh

15

यह समाधान बताता है कि व्यक्तिगत दृश्य नियंत्रकों पर अभिविन्यास को कैसे नियंत्रित किया जाए, बशर्ते वे एक नेविगेशन नियंत्रक द्वारा प्रबंधित किए जाएं।

एक्सकोड 5 में, "ऑब्जेक्टिव-सी श्रेणी" प्रकार की एक नई फ़ाइल बनाएं, इसे "श्रेणी" को "रोटेशन" पर सेट करें और "श्रेणी" के रूप में "UINavigationController" चुनें।

एक नया फ़ाइल जोड़ी परियोजना में दिखाई देगा, निम्न नामों होने: UINavigationController + rotation.h UINavigationController + rotation.m

मीटर फ़ाइल में निम्न कोड लिखें:

- (BOOL) shouldAutorotate 
{ 
    return [[self topViewController] shouldAutorotate]; 
} 

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return [[self topViewController] supportedInterfaceOrientations]; 
} 

इस प्रकार, नेविगेशन नियंत्रक मौजूदा शीर्ष दृश्य नियंत्रक को अभिविन्यास नीति निर्धारित करने देगा।

फिर, नेविगेशन नियंत्रक द्वारा प्रबंधित प्रत्येक विशिष्ट दृश्य नियंत्रक में, आप दो अभिविन्यास-संबंधी विधियों को ओवरराइड कर सकते हैं।

उदाहरण के लिए

, अगर एक विशेष दृश्य नियंत्रक केवल पोर्ट्रेट ओरिएंटेशन में दिखाई जाएगी:

- (BOOL) shouldAutorotate 
{    
    return NO; 
} 

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

सुनिश्चित करें कि वांछित उन्मुखीकरण परियोजना तैनाती की जानकारी में सेट उन में से एक है। आशा है कि यह पर्याप्त रूप से विस्तृत है और सहायता की जा सकती है।

+0

पूरी तरह से काम करता है - धन्यवाद! – wayneh

+0

महान जवाब, यह वास्तव में एक अच्छा काम है! – EridB

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