2013-12-06 3 views
6

У меня есть приложение, которое всегда отображается в портретном режиме.iOS 7 Ориентация интерфейса

Но у меня есть медиа-галерея, которая должна поддерживать пейзаж.

Поддерживаемая ориентация по умолчанию в проекте - портрет. Из-за этого галерея отображается только в портретном режиме.

Если я изменяю настройку проекта, чтобы показывать в портретной и альбомной ориентации, галерея отлично работает, но я не могу контролировать другие viewControllers, чтобы они отображались только в портрете.

Я пробовал несколько методов, таких как shouldAutoRotate, но никто не работал.

Любые идеи, как их решить?

Привет

РЕДАКТИРОВАТЬ:

решаемые :)

Сначала я настроен проект для поддержки всех ориентации. Затем я добавил этот метод к AppDelegate.m:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape; 
} 

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

кода для блокировки ориентации (IOS 7):

- (BOOL)shouldAutorotate 
{ 
    return YES; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return (UIInterfaceOrientationMaskPortrait); 
} 

Спасибо всем, кто ответил мне :)

+0

см. Мою статью также: http://stackoverflow.com/questions/19422373/how-to-set-one-of-the-screens-in-landscape-mode-in-iphone/19423135#19423135 –

+0

В моем если ваш код не работает. Представление поворачивается в положение ландшафта, даже если я укажу портрет как в «поддерживаемом», так и в «предпочтительном». Ничего не изменится, если я установил shouldAutorotate в true или false. –

+0

Такая же проблема у меня была. iOS 7+ сделал обработку ориентированной чертовой сложной вещи. – Fmessina

ответ

7

В моем приложении для iPhone его поддерживает только вид портрета только, но согласно требованию к необходимости поддержать пейзажное только на виду, в то время я использую следующий способ и его помощь мне:

в делегат своего приложения .h

@interface PlayWithWSWithLibAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { 

     BOOL flagOrientationAll; 
} 

@property (assign) BOOL flagOrientationAll; 

Добавить следующий метод в приложении файл делегат .m

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{ 
    //NSLog(@"PlayWithWSWithLibAppDelegate -- supportedInterfaceOrientationsForWindow"); 
    if([UICommonUtils isiPad]){ 
     return UIInterfaceOrientationMaskAll; 
    }else if(flagOrientationAll == YES){ 
     return UIInterfaceOrientationMaskAll; 
    } else { 
     return UIInterfaceOrientationMaskPortrait; 
    } 
} 

Реализовать следующим образом, на ваш взгляд, который вы хотите повернуть в книжной и альбомной ориентации, как для iPhone устройства

-(void)viewWillAppear:(BOOL)animated 
{ 
    self.tabBarController.delegate = self; 

    PlayWithWSWithLibAppDelegate *delegate = (PlayWithWSWithLibAppDelegate *) [[UIApplication sharedApplication] delegate]; 
    delegate.flagOrientationAll = YES; 
} 
} 

-(void)viewWillDisappear:(BOOL)animated 
{ 
    //NSLog(@"viewWillDisappear -- Start"); 
    PlayWithWSWithLibAppDelegate *delegate = (PlayWithWSWithLibAppDelegate *)[[UIApplication sharedApplication] delegate]; 
     delegate.flagOrientationAll = NO; 
} 

см этот пост также: How to set one of the screens in landscape mode in iphone?

+0

Спасибо. Не работал, но дал мне идею, как решить :) –

+0

Не забудьте добавить '@synthesize flagOrientationAll;' в файл делегирования приложения .m file – AlvaroSantisteban

1

Вы должны сделать еще один класс в том же представлении Контроллер, где вы представляете свои носители.

В этом разделе вы можете указать ориентацию, где она будет поддерживать только ландшафтную ориентацию, только когда вы представите свои медиа.

Я даю вам пример моего приложения, которое поддерживает только в ландшафтном режиме, но когда я взял Image picker, и он поддерживает только портретный режим, поэтому я изменил ориентацию только для этого вида.

#pragma mark - Image PICKER 

@interface NonRotatingUIImagePickerController : UIImagePickerController 

@end 

@implementation NonRotatingUIImagePickerController 



- (BOOL)shouldAutorotate 
{ 
    return YES; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationPortrait ; 
} 

@end 

Тогда, когда я использовал ImagePicker, я использовал объект класса, который я создал.

Так что я определяю, как показано ниже.

UIImagePickerController* picker = [[NonRotatingUIImagePickerController alloc] init]; 

So For Image Picker Он отображается только в портретном режиме.

Вам просто нужно изменить пейзаж вместо портрета, если хотите только ориентацию ландшафта для вашего конкретного вида, где вы хотите его изменить.

Надеюсь, это вам поможет.

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