2013-02-21 2 views
13

내 앱이 자동 회전 할 수 있지만 세로 모드로만 표시 할 수있는 뷰 중 하나가 필요하며이를 달성하는 방법을 알지 못합니다. 하나의보기 컨트롤러에 대한 자동 회전 방지?

나는이 (다른 것들 사이) 시도했지만 문제의보기는 여전히 회전 :

// ViewController.m 

-(BOOL)shouldAutorotate 
{    
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

사람이 친절하게 내가 잘못 무엇을 지적 할 수 있습니까? 감사.

-edit-

그것은 아이폰 OS 6.1 UINavigationController이 참여하고있다

+0

어떤 SDK 버전을 개발하고 있습니까? –

+0

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

+0

iOS 6, 죄송합니다. OP를 업데이트했습니다. – Robert

답변

30

위한거야, UINavigationControlleroverride supportedInterfaceOrientations상의 범주를 만들 수 있습니다.

#import "UINavigationController+Orientation.h" 

@implementation UINavigationController (Orientation) 

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

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 

@end 

이제 (예 : UINavigationController가 등) 아이폰 OS 컨테이너가 자동 회전 여부를 결정하기 위해 자녀를 참조하지 않습니다.


1. 새 파일 (코코아 터치에서 목표 C-카테고리)
2. Category 추가 카테고리 만드는 방법 :
3. UINavigationController+Orientation.m

+0

예, 거기에'UINavigationController'가 관련되어 있습니다 만 고백해야합니다. 서브 클래 싱으로 무엇을 의미하는지 정확히 알지 못하기 때문에 약간의 독서를 할 것입니다. – Robert

+0

@Robert 'UINavigationController'에 카테고리를 추가하십시오. 내 편집을 참조하십시오. –

+0

이것은 부모 UITabBarController에도 적용됩니다. – Halpo

2
에 위의 코드를 추가 UINavigationController가에 방향을

스위프트 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 
    } 
}