Принудительный портрет в одном представлении, контроллер изначально делает другой портретный

Контроллер корневого представления контроллера навигации поддерживает только портретную ориентацию, а другие контроллеры поддерживают всю ориентацию.Теперь, если я нахожусь на контроллере корневого представления, а УСТРОЙСТВА находятся в альбомной ориентации, и если я нажимаю следующий контроллер представления, который открывается в портретной ориентации, который должен открываться в альбомной ориентации как он поддерживает любую ориентацию.

Пожалуйста, помогите мне с этим.

Использование iPhone 4s iOS6.1.3


person Nilesh    schedule 23.05.2013    source источник
comment
но вращается ли он, если вы продолжаете вращать устройство? или он остается на портрете?   -  person jcesarmobile    schedule 23.05.2013
comment
@ jcesar: он вращается, если я поверну устройство.   -  person Nilesh    schedule 23.05.2013


Ответы (3)


вы можете проверить ориентацию устройства на своем первом экране после входа в систему просмотра, используя следующий код: -

-(void)viewWillAppear:(BOOL)animated
    {
        [self willRotateToOrientation:[[UIDevice currentDevice] orientation]];  
        [super viewWillAppear:YES];
    }


- (void)willRotateToOrientation:(UIInterfaceOrientation)newOrientation {
        if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
        {
            if (newOrientation == UIInterfaceOrientationLandscapeLeft || newOrientation == UIInterfaceOrientationLandscapeRight) {

              //set your landscap View Frame
                [self supportedInterfaceOrientations];

            }



        }
        else if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation))
        {
            if(newOrientation == UIInterfaceOrientationPortrait || newOrientation == UIInterfaceOrientationPortraitUpsideDown){
      //set your Potrait View Frame
                [self supportedInterfaceOrientations];

            }
        }
        // Handle rotation
    }

Когда вы загружаете этот контроллер просмотра, он сначала проверяет ориентацию устройства, а затем загружает связанный с ним фрейм

person Nitin Gohel    schedule 23.05.2013
comment
Спасибо за ответ, чувак, я делаю то же самое, но это не помогает. :( В любом случае я поддерживаю ваш ответ, так как он может помочь кому-то другому. - person Nilesh; 23.05.2013

Думаю, это проблема, связанная с изменением ориентации в iOS6. Вам нужно создать подкласс UINavigationController

Проверьте это

person Anil Varghese    schedule 23.05.2013

1. Вы должны создать подкласс UINavigationController. добавить следующий метод .. Возьмите одну логическую переменную, чтобы проверить, поддерживает ли она всю ориентацию или нет, и измените ее значение.

 @implementation NavigationControllerViewController

- (BOOL)shouldAutorotate
{
return YES;
}      

- (NSUInteger)supportedInterfaceOrientations
{
AppDelegate *appdelgate=[[UIApplication sharedApplication]delegate];

if (appdelgate.issuppoertAll) {
    // for iPhone, you could also return UIInterfaceOrientationMaskAllButUpsideDown
    return UIInterfaceOrientationMaskAll;

}
return UIInterfaceOrientationMaskPortrait;

  }
 @end

2 при переходе от корневого контроллера представления формы к другому контроллеру представления

используйте этот код, когда вы хотите принудительно изменить его ориентацию. например lanscape на портрет

      obj_viewcontroller        = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    [self presentModalViewController:obj_viewcontroller animated:NO];
    [self dismissModalViewControllerAnimated:NO];

    [self.navigationController pushViewController:obj_viewcontroller animated:NO];

3 Во втором контроллере представления необходимо изменить значение логической переменной.

-(void)viewWillAppear:(BOOL)animated
{
appdelgate.issuppoertAll=YES;
  }

4 Добавьте этот метод во все контроллеры представления и установите ориентацию в соответствии с вашими потребностями.

- (NSInteger)supportedInterfaceOrientations 
{
return UIInterfaceOrientationMaskPortrait;
 }
person Kalpesh    schedule 23.05.2013
comment
Я пробую это, выглядит многообещающе - person Nilesh; 23.05.2013