У меня есть приложение с 9-10 экранами. Я вложил UINavigationController
в свой контроллер представления. У меня есть несколько контроллеров просмотра, которые я хочу установить только портретную ориентацию: это означает, что вращение устройства не должно поворачивать эти контроллеры представлений в ландшафтном режиме. Я пробовал следующие решения:
первый:
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
но экран по-прежнему вращается в альбомной ориентации.
Второе:
Я создал настраиваемый класс контроллера вида PortraitViewController
и добавил код ниже в PortraitViewController.m
@interface PortraitViewController ()
@end
@implementation PortraitViewController
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
//Here check class name and then return type of orientation
return UIInterfaceOrientationMaskPortrait;
}
@end
После этого я реализовал PortraitViewController.h
как базовый класс
#import <UIKit/UIKit.h>
#import "PortraitViewController.h"
@interface Login : PortraitViewController
@end
Он вообще не работает, по-прежнему позволяет контроллеру просмотра вращаться в ландшафтном режиме.
Есть ли какое-либо другое решение, использующее iOS 8 и не хочу, чтобы viewcontroller вращался в ландшафтном режиме?
EDIT: Возможно ли иметь ориентацию ландшафта только для некоторых контроллеров просмотра и заставить ориентацию других диспетчеров виджетов придерживаться "Портрет"?