2

Примечание: в iOS 8, строка состояния автоматически скрывается в ландшафте и возвращается в портрет (только для iPhone).MPMoviePlayerViewController Ошибка строки состояния iOS 8

Чтобы показать видео в моем приложении, я использую XCDYouTubeKit, который является легкой оболочкой на MPMoviePlayerViewController.

Мне пришлось установить «Просмотр состояния панели управления на основе контроллера» в файле info.plist в «НЕТ» в моем приложении из-за некоторой функциональности. Приложение работает нормально, пока вы не используете XCDYouTubeKit (MPMoviePlayerViewController). После использования XCDYouTubeKit приложение теряет функциональность, указанную в «Примечание» выше, означает, что строка состояния также отображается в ландшафте.

Здесь вы можете скачать демо-проект.

https://www.dropbox.com/s/yp5pkvf9evsl8wb/XCDYouTubeKit%20Demo.zip?dl=0

Чтобы испытать это, что вам нужно выполнить следующие шаги в XCDYouTubeKit демо:

  1. множества «Вид на базе контроллера Строка состояния внешнего вида» в info.plist файле на «NO» ,
  2. Откройте приложение в iOS 8 и перейдите к «Full Screen Player».
  3. Измените ориентацию на портретный или альбомный или наоборот. Вы увидите, что строка состояния скрыта в ландшафте, но не в портретной ориентации.
  4. Теперь нажмите на кнопку «Воспроизвести полный экран» (портретный режим) и дайте контроллеру просмотра подойти.
  5. Отключите видео, нажав кнопку «done» (независимо от ориентации).
  6. Измените ориентацию на портретный или альбомный или наоборот. Вы увидите, что строка состояния остается там все время независимо от ориентации устройства.

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

ответ

2

Примечание тоже жестковата, вы можете (спорно!) просто использовать категорию тха t!

только один раз для всего приложения. Мы делаем его каждый раз в приложениях с большим объемом производства (в эпоху объектива-c) без проблем, и я постоянно вижу его в проектах с большими объемами клиентов. ... Так ..

1) сделать категорию под названием точно UIViewController + HideStatusBar

@interface UIViewController (HideStatusBar) 
@end 
// the only practical approach for no-statusbar in iOS7,8+ 
@implementation UIViewController (HideStatusBar) 
#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation" 
-(BOOL)prefersStatusBarHidden {return YES;} 
-(UIViewController *)childViewControllerForStatusBarHidden {return nil;} 
#pragma clang diagnostic pop 
@end 

2) в вашем PLIST добавить

<key>UIStatusBarHidden~ipad</key> 
<true/> 
// that is needed if you're covering iPad; do it always for consistency 

3) У не набор " Строка состояния изначально скрыта "до" YES "в вашем plist.

4) Do не alter UIViewControllerBasedStatusBarAppearance.

Расширенная discussion.

2

Не удалось найти решение проблемы с оригиналом. Но мне удалось достичь конечной цели, т. Е. Строка состояния перестала отображаться в альбомной ориентации (iOS 8 & & iPhone).

  1. Я садился «Посмотреть контроллер на основе строки состояния внешнего вида» к NO, потому что я должен был установить стиль статуса света через вне приложения.
  2. Но поскольку настройка «Просмотр состояния панели управления на основе контроллера» в НЕТ вызывала основную проблему, я удалил ее, что привело к тому, что черная строка состояния чернила через приложение, но решила главную проблему.
  3. Тогда я должен был поставить следующий код во всех независимых контроллерах отображения:

    -(UIStatusBarStyle)preferredStatusBarStyle { 
        return UIStatusBarStyleLightContent; 
    } 
    

и для тех, кто контроллера представления, которые содержатся в UINavigationController я взял справку из следующего вопроса:

preferredStatusBarStyle isn't called

+0

спасибо @JoeBlow Я полностью согласен с вашим комментарием. Его эффективность. Пожалуйста, опубликуйте его как ответ. Я выберу его. – harshitgupta

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