2013-02-21 12 views
13

मेरा ऐप ऑटोरोटेट कर सकता है लेकिन मुझे केवल पोर्ट्रेट मोड में दिखाने के लिए एक दृश्य की आवश्यकता है और यह नहीं पता कि इसे कैसे प्राप्त किया जाए।एक दृश्य नियंत्रक के लिए autorotate रोकें?

मैं इस (अन्य बातों के अलावा) की कोशिश की लेकिन विचाराधीन दृश्य अभी भी घूमता है:

// ViewController.m 

-(BOOL)shouldAutorotate 
{    
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

किसी कृपया बाहर बिंदु सकता है मैं गलत क्या कर रहा हूँ? धन्यवाद।

-edit-

यह आईओएस 6.1

+0

आप किस एसडीके संस्करण के लिए विकास कर रहे हैं? –

+0

http://stackoverflow.com/questions/12630359/ios-6-how-do-i-restrict-some-views-to-portrait-and-allow-others-to-rotate – msk

+0

आईओएस 6, क्षमा करें। मैंने ओपी अपडेट किया है। – Robert

उत्तर

30

जब एक UINavigationController शामिल है के लिए है, UINavigationController और override supportedInterfaceOrientations पर एक वर्ग पैदा करते हैं।

#import "UINavigationController+Orientation.h" 

@implementation UINavigationController (Orientation) 

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

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 

@end 

अब, आईओएस कंटेनर (जैसे UINavigationController के रूप में) निर्धारित करने के लिए कि क्या वे autorotate चाहिए अपने बच्चों से परामर्श नहीं है।

एक वर्ग
1. एक नई फ़ाइल (कोको टच के तहत उद्देश्य ग श्रेणी)
2. Category जोड़े बनाने के लिए कैसे: अभिविन्यास UINavigationController पर
3. UINavigationController+Orientation.m

+0

हां, एक 'UINavigationController' शामिल है लेकिन मुझे कबूल करना है subclassing द्वारा वास्तव में क्या मतलब है जानने के लिए नहीं, लेकिन मैं कुछ पढ़ना होगा। – Robert

+0

@Robert बस 'UINavigationController' पर एक श्रेणी जोड़ें मेरे संपादन –

+0

देखें यह माता-पिता UITabBarController – Halpo

2
करने के लिए उपरोक्त कोड जोड़ें

स्विफ्ट 3 संस्करण स्वीकार्य उत्तर:

extension UINavigationController { 

    open override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
     // Change `.portrait` to whatever your default is throughout your app 
     return topViewController?.supportedInterfaceOrientations ?? .portrait 
    } 

    open override var shouldAutorotate: Bool { 
     return true 
    } 
} 
संबंधित मुद्दे