Подтвердить что ты не робот

Xcode 6.x/iOS 8 Скрывает строку состояния в ориентации на ландшафт

Сборка приложения с Xcode 6.x автоматически скрывает строку состояния в альбомной ориентации (iPhone). То же приложение, когда скомпилировано с Xcode 5.x, этого не делает.

Как я могу препятствовать приложению скрывать строку состояния в альбомной ориентации? В принципе, как я могу отключить эту "супер-потрясающую" функцию, которую Apple/Xcode засунул мне в горло?

p.s. Я пробовал обновлять контроллеры представлений с помощью следующего кода, но это не помогает.

- (BOOL)prefersStatusBarHidden {
    return NO;
}
4b9b3361

Ответ 1

Наилучшее возможное решение

Это в основном двухэтапный процесс:

1). Установите "Просмотреть состояние панели управления на основе контроллера" до NO в файле проекта Info.plist.

2). Принудите скрытый статус строки состояния NO, в application:didFinishLaunchingWithOptions:, используя следующий код:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

И, вуаля!

Примечание. Важно использовать оба оператора setStatusBarHidden:withAnimation: выше, чтобы заблокировать скрытое состояние строки состояния.


Ссылка: На iOS8 отображение моего приложения в ландшафтном режиме скроет строку состояния, но на iOS 7 строка состояния отображается на обеих ориентациях

Ответ 2

Я использую

#define IS_IOS8 SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];

    if (IS_IOS8){
            [[UIApplication sharedApplication] setStatusBarHidden:NO];
    }
}

Ответ 3

Установите "Просмотр строки состояния на основе контроллера" на YES в Info.plist

Затем поместите следующий код в желаемый контроллер:

- (BOOL)prefersStatusBarHidden {
    return NO;
}