Выход из полноэкранного проигрывателя фильмов приводит к тому, что панель навигации navigationController перемещается за строку состояния - PullRequest
3 голосов
/ 04 марта 2011

У меня добавлено представление MPMoviePlayerController в качестве подпредставления на моем ViewController.

Я использую layoutSubviews для изменения размера подпредставлений во время изменения ориентации.

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

Мне интересно, что я делаю что-то не так ... Кто-нибудь может помочь?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 15 января 2014

Не меняйте рамку вашего навигационного бара, читайте ниже из документации Apple:

Контроллер навигации управляет созданием, настройкой и отображение панели навигации и дополнительной панели инструментов навигации. это допустимо настраивать внешний вид навигационной панели свойства, но вы никогда не должны изменять его рамку, границы или альфа значения напрямую. Если вы подкласс UINavigationBar, вы должны инициализировать ваш навигационный контроллер с помощью initWithNavigationBarClass: toolbarClass: метод. Чтобы скрыть или показать панель навигации, используйте свойство navigationBarHidden или setNavigationBarHidden: animated: method

https://developer.apple.com/library/ios/documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

Теперь я делаю это, и она отлично работает:
1) в точке входа в вашем контроллере представления добавьте себя в качестве наблюдателя в состояния проигрывателя фильмов

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerChangedState) name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];

2) Ответ на уведомление:

// run this method on the main thread
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
    [self.navigationController setNavigationBarHidden:YES];
    [self.navigationController setNavigationBarHidden:NO animated:YES];

Примечание. Этот код работает на iOS 7, я не тестировал его для более старых версий iOS.

3 голосов
/ 07 марта 2011

Для тех, кто ищет ответ, я исправил его, сбросив исходное значение фрейма navigationController.navigationBar на 0,20 следующим образом:

self.navigationController.navigationBar.frame = CGRectMake(0, 20, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height);
2 голосов
/ 12 сентября 2011

У меня была похожая проблема, и принятое решение мне не помогло. Что помогло, так это ответ на этот пост: Исчезающая строка состояния вверху после закрытия MPMoviePlayerController

В основном пришлось добавить отложенный вызов, чтобы установить [UIApplication sharedApplication] .statusBarHidden = NO;

(опубликовано здесь, только если кто-то еще имеет эту проблему)

...