2014-01-07 2 views
0

У меня есть MovieViewController как ребенок UINavigationController. Я использовал MPMoviePlayerViewController для воспроизведения потокового видео, запускаемого с MovieViewController, и в этом видеоизображении он может изменить ориентацию на пейзаж или портрет. Все, что мне нужно, когда я нажимаю кнопку «Готово», MovieViewController снова переключается в портретный режим, потому что это режим поддержки только поддержки.Принудительное управление UINavigationController только в портретном режиме

Вот код

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

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

- (BOOL) shouldAutorotate { 
    return FALSE; 
} 

Но когда я нажимаю на кнопку Готово это сбой, «preferredInterfaceOrientationForPresentation должен вернуть поддерживаемую ориентацию интерфейса!»

примечание: я назвал moviePlayer модально.

NSURL *movieURL = [NSURL URLWithString:@"URL"]; 
player =[[MyMoviePlayerViewController alloc] 
             initWithContentURL:movieURL]; 
[self presentViewController:player animated:YES completion:nil]; 

Итак, после того, как он вызывается, вы можете сделать кнопку, которая отклонит представление. Проблема в том, что когда я просматриваю фильм в альбомном режиме и нажимаю кнопку «Готово», он разбился, потому что у меня есть только 1 поддерживаемый интерфейс (портрет).

+0

считают это решение, которое создает категорию по навигации контроллера, который устанавливает его для разрешенных/dissalowed ориентаций http://stackoverflow.com/questions/26205269/force-view-controller-to-portrait-only – zonabi

ответ

0

Спасибо за все ответы, но это код, который решает все мои проблемы выше.

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationPortrait; 
} 
+0

Где вы поместили этот код? –

2

Есть несколько вещей, которые вам нужно сделать.

Сначала удалите эту строку - это устарело.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Во-вторых, подкласс ваш UINavigationController и добавьте следующий код:

- (NSUInteger)supportedInterfaceOrientations 
{ 
    NSUInteger orientation = UIInterfaceOrientationMaskPortrait; 
    if ([self.navigationController.visibleViewController isMemberOfClass:[MPMoviePlayerViewController class]]) { 
     orientation = UIInterfaceOrientationMaskAll; 
    } 
    return orientation; 
} 

- (BOOL)shouldAutorotate 
{ 
    return YES; 
} 

В этом коде, я предполагаю, что вы подталкивая MPMovieController (через ваш navigationController) на вершине MovieViewController.

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