2013-03-01 3 views
1

Я проверяю ориентацию устройства в viewDidAppear и viewWillAppear и принудительно ориентируюсь по телефону willAnimateRotationToInterfaceOrientation.Проблема с ориентацией в iPad ios6

- (void) viewWillAppear:(BOOL)animated 
    { 
    [super viewWillAppear:YES]; 
    _levelComplete = YES; 

    [self willAnimateRotationToInterfaceOrientation:[[UIDevice currentDevice] orientation] duration:0.01]; 

    } 

- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
    { 
     if (toInterfaceOrientation == (UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight)) 
    { 

    } 
    else if (toInterfaceOrientation == UIInterfaceOrientationPortrait) 
    { 

    } 
} 

Проблема я сталкиваюсь в том, что toInterfaceOrientation это остается 0 для обоего viewDidAppear и viewWillAppear метода, следовательно, аварийного завершения работы программы.

В чем может быть проблема?

Пожалуйста, помогите!

ответ

2

Попробуйте

- (void) viewDidLoad 
     { 
     _levelComplete = YES; 

     [self adjustViewsForOrientation:self.interfaceOrientation]; 

     } 
    -(void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation 
    { 

     if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) 
     { 

     } 
     else 
     { 
     } 
} 
+0

Работает отлично! Спасибо :) Проблема с ориентацией [[UIDevice currentDevice]] –

0

Как вы сказали: Проблема я сталкиваемся в том, что toInterfaceOrientation это остается 0 для обоих viewDidAppear и метод viewWillAppear, следовательно, аварийное завершение работы программы.

Ориентация 0 относится к неизвестной ориентации. Установите точку останова на viewWillAppear и viewDiddAppear и на делегаты ориентации. Обратите внимание, что delagates ориентации вызывается первым из делегатов представления.

Вы можете использовать делегат

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 

{ 
    return UIInterfaceOrientationLandscapeLeft; 
} 

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

Попробуйте.

+0

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

+0

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

+0

Я хочу изменить ориентацию взгляда на основе ориентации устройства! Я не хочу принуждать одну ориентацию. –

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