2013-09-05 2 views
1

У меня есть все приложение в портретном режиме, но у меня есть один из viewcontroller в ландшафтном режиме, чтобы быть галереей изображений.Принудительная ориентация в портретном режиме

На вкладке «Сводка проекта» разрешен режим LandscapeLeft, поэтому мне нужно отключить поворот таким образом в остальной части Viewcontroller, за исключением VC галереи изображений.

Я хочу сохранить вращение в портретном режиме, чтобы сделать это и блокировать весь портрет VC, я использовал следующий код

-(BOOL)shouldAutorotate{ 
return YES; 
} 

-(NSInteger)supportedInterfaceOrientations{ 
return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
} 
return UIInterfaceOrientationPortrait; 
} 

Это, держать меня в ландшафтном режиме в предыдущем ВК, когда его следует повернуть в положение «Портрет».

Любая идея?

+1

Используете ли вы навигацию или вкладку b АРС? –

ответ

6

Для портретной режим VC,

#pragma mark iOS 5 Orientation Support 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

    return UIInterfaceOrientationIsPortrait(interfaceOrientation); 
} 

#pragma mark iOS 6 Orientation Support 

-(NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Для ландшафтного режима ВК,

#pragma mark - iOS 5.0 and up Rotation Methods 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

    return UIInterfaceOrientationMaskLandscape; 

} 

#pragma mark - iOS 6.0 and up Rotation Methods 

- (NSUInteger)supportedInterfaceOrientations; 
{ 
    return UIInterfaceOrientationMaskLandscape; 
} 

Если вы используете navigationController,

Создать категорию, как это,

@interface UINavigationController (Rotation_IOS6) 

    @end 

    @implementation UINavigationController (Rotation_IOS6) 

    -(BOOL)shouldAutorotate 
    { 
     if([self.visibleViewController isMemberOfClass:NSClassFromString(@"YourLandscapeViewController")]) 
     { 
      return UIInterfaceOrientationMaskLandscape 
     } 
     return NO; 
    } 

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

    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
    { 
     if([self.visibleViewController isMemberOfClass:NSClassFromString(@"YourLandscapeViewController")]) 
     { 
      return UIInterfaceOrientationMaskLandscape 
     } 
     return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation]; 
    } 

@end 
+0

Большое спасибо karthika !!! Отлично !! – user1908661

+0

Спасибо за это! Не могли бы вы обновить свой пример кода, чтобы вернуть _UIInterfaceOrientationMask_ вместо _NSUInteger_ для _supportedInterfaceOrientations_? В текущем xCode (9.x) текущая версия выдает предупреждение. – Stijnster

Смежные вопросы