2016-07-25 3 views
3

Я хочу установить UIViewController в портретном, я пытался добавитьКак установить ориентацию только в портрете?

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 

- (UIInterfaceOrientationMask)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (BOOL)shouldAutorotate { 
    return [UIApplication sharedApplication].statusBarOrientation != UIDeviceOrientationPortrait; 
} 

Но когда я беру свой телефон в альбомной, а затем введите этот UIViewController,

Я побегу в ландшафт, а затем повернуть в портретный !

, но я не хочу, это показывает пейзаж, я хочу показать портрет незамедлительного,

Есть ли неправильная установка?

EDIT

Я назвал ошибку ViewController "СВУ", это подарок от "ВПЦ"

в VCB-х viewDidAppear, я назвал

[self presentViewController:vc animated:NO completion:nil];

то VCA будет отображаться в пейзаж (если vcB был в ландшафте),

если добавить fe w задержка как:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    [self presentViewController:vc animated:NO completion:nil]; 
}); 

он покажет портрет, но я не знаю, почему это произошло!

ОТВЕТЬТЕ НА

Наконец, я нашел причину!

  1. когда я запускаю приложение, это остаться в портретном режиме,

  2. После запуска VCB является первым VC я назвал,

  3. Телефон пребывание в альбомной, так что, когда viewDidAppear в VCB, его звоните повернуть на альбомную

  4. в то же время в viewDidAppear, я также называю present:vcA

  5. Так в настоящее время, вид должны сделать оба вращаются в альбомную и настоящим VCA (должен в портретном !!)

  6. Тогда плохая ситуация случилась!

Решение

Просто отключить Чередовать первого запуска в "ВПЦ", то в viewDidAppear, он будет вызывать только present:vcA

Спасибо всем большое!

+0

вы пытались с помощью viewWillAppear, чтобы заставить вид быть портрет? –

+0

Да, я пробовал. Он может правильно поворачиваться на портрет, но он также сначала отображается в ландшафте, как я могу отключить пейзаж? Я не хочу показывать пейзаж, он не поддерживается! – Devin

+0

@Devin проверить этот ответ, может быть, может помочь вам https://stackoverflow.com/questions/38308919/unable-to-force-uiviewcontroller-orientation/38308987#38308987 –

ответ

3
  1. Перейти Общие настройки вашего Xcode проекта

  2. Найти развертывания информации

  3. Проверьте ориентацию устройства только портрет.

    enter image description here

ИЛИ

- (void)viewWillAppear:(BOOL)animated { 

    [[UIDevice currentDevice] setValue:[NSNumber numberWithInteger: UIInterfaceOrientationPortrait]forKey:@"orientation"]; 
} 

- (BOOL)shouldAutorotate{ 
    return NO; 
} 
+0

Я только хотите установить портрет в текущем viewcontroller, изменение в General мне не подходит, я пытаюсь добавить функцию в viewWillAppear, но она по-прежнему показывает пейзаж первым! – Devin

+0

проверить обновленный ответ –

+0

Да, я тоже пробовал! Это остановится в пейзаже. Я обнаружил, что что-то может произойти, я скоро добавлю! – Devin

2
  1. Выберите Проект-> мишенями> Project> Общие
  2. Проверьте и снимите флажок в соответствии с скриншоте (Под Deployment)
  3. Убедитесь, что для проверки требуется полный экран, иначе вы не сможете отправить приложение в приложение е.

enter image description here

+0

делать это не имеет никакого смысла ... –

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