1

У меня есть два контроллера вида, встроенных в контроллер навигации. Моему контроллеру первого представления разрешено вращать, тогда как мой второй контроллер просмотра всегда должен открываться в портретном режиме. Например, даже если Я в ландшафтном режиме в контроллере первого взгляда. Я хочу открыть только вторую фотографию,Как заставить контроллер моего вида всегда открываться в портретном режиме

Я представляю второй контроллер просмотра, нажимая сначала segue.

+0

Возможный дубликат [Как заставить вид контроллера остаться в портретном режиме?] (Http://stackoverflow.com/questions/16720968/how-to -force-view-controller-to-stay-in-portrait-mode) –

+0

Возможный дубликат [Как заставить UIViewController ориентироваться в Portait в iOS 6] (http://stackoverflow.com/questions/12520030/how-to -force-а-UIViewController к Portait ориентации-в-КСН-6) – kb920

ответ

2

Вы должны реализовать shouldAutorotate на втором VC

Просто, прежде чем представить второй VC (портрет) называют

if([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) { 
     [[UIDevice currentDevice] setValue:[NSNumber numberWithInteger: UIInterfaceOrientationPortrait] forKey:@"orientation"]; 
} 
0

Решение 1: создать собственный UINavigationController подкласс и переопределить эти методы, как это :

@interface LockedNavigationViewController() 

@end 

@implementation LockedNavigationViewController 

-(BOOL)shouldAutorotate { 
    return UIInterfaceOrientationMaskPortrait; 
} 

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000 
- (NSUInteger)supportedInterfaceOrientations 
#else 
- (UIInterfaceOrientationMask)supportedInterfaceOrientations 
#endif 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 

@end 
0

enter image description here

Выберите проект -> общий, затем следуйте приведенному выше изображению.

1

Вы можете использовать этот метод в Уре AppDelegate класса для поддержания и с BOOL вар

-(NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 
    if(self.isDisplayInPoratrait){ 
     return UIInterfaceOrientationMaskPortrait; 
    else 
     // return ur required orientation 
} 

self.isDisplayInPoratrait является BOOL переменная, объявленная в AppDelagate наборе эта переменная да в классе, которые и хотят представить в портрет. Поместите этот метод в классе, который у Вана представить в портретном

-(BOOL)shouldAutorotate { 
    return NO; 
} 

-(UIInterfaceOrientationMask)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationLandscapeLeft; 
}