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

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

Я хочу, чтобы строка состояния отображалась в обеих ориентациях в iOS 8; он правильно отображается в iOS 7.

navigationController.isNavigationBarHidden возвращает NO.

Почему IOS 8 делает это?

4b9b3361

Ответ 1

Попробуйте это

Добавьте ниже код в didRotateFromInterfaceOrientation

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

ИЗМЕНИТЬ
НЕТ НУЖДАЕТСЯ ПИСЬМЕННЫЙ КОД ВСЕХ ПРОСМОТРЕТЬ КОНТРОЛЛЕР
Установите View controller-based status bar appearance в NO в plist и добавьте ниже код в контроллер корневого представления viewDidLoad

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

Демо-проект
https://www.dropbox.com/s/uumneidk4wom5md/demoStatusBar.zip?dl=0

Ответ 2

Чтобы отобразить строку состояния в ландшафтном режиме в ios 8, попробуйте выполнить следующий метод.

- (BOOL)prefersStatusBarHidden {
    return NO;
}

Быстрая версия

override func prefersStatusBarHidden() -> Bool {
    return false
}

Swift 3, Xcode 8, iOS 10,/* ViewController.swift */

override var prefersStatusBarHidden: Bool {
        return false
    }

Ответ 3

Решение Jageen, вероятно, является лучшим, только с одним незначительным изменением, т.е. вместо использования viewDidLoad, лучше использовать application:didFinishLaunchingWithOptions:.

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

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

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

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

И, вуаля!

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

Ответ 4

У меня была такая же проблема! Исправлено при употреблении этого файла viewDidLoad

  [self setNeedsStatusBarAppearanceUpdate];

И это для самой реализации

-(BOOL)prefersStatusBarHidden{
    return NO;
}

Ответ 5

Они удерживают нас с прибылью, предоставляя нам больше работы.

или...

Они внесли другие изменения, которые заставляют биты занимать больше места, чем раньше. С iOS 7 и появлением таких вещей, как "Руководство по верхнему макету", простое доступность строки состояния на экране прокрутки вниз, восстановление пространства состояния, которое можно использовать, и другие небольшие подсказки, которые многие люди предсказывали, что строка состояния может быть постепенно прекращается как стандартная часть пользовательского интерфейса.

Существует также довольно много шума о новых размерах устройств из-за изменений, внесенных ими в iOS 8, что упрощает кодирование для группы разных размеров.

Это чистая спекуляция, но я не думаю, что они будут отображаться в строке состояния в iOS 8.

Ответ 6

Это не проблема, а особенность iOS 8. Строка состояния будет скрыта в ландшафтном режиме в iOS 8, даже приложения Apple также имеют одинаковое поведение.

Ответ 7

Swift 3

override func viewDidLoad() {
        super.viewDidLoad()
        UIApplication.shared.setStatusBarHidden(true, with: .none)
        UIApplication.shared.setStatusBarHidden(false, with: .none)
///
    }

и добавьте внутри Info.plist this:

UIViewControllerBasedStatusBarAppearance логическое значение NO

Ответ 8

Swift 3 (по состоянию на 2 июня 2017 года)

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var prefersStatusBarHidden : Bool {
    return false
}

Ответ 9

Мы исправили это, выполнив описанные выше шаги и убедившись, что обе стороны включены как влево, так и вправо.

Информация о проекте/цели/развертывании

enter image description here

Ответ 10

Мы решили это, заставив пользователя изменить ориентацию, невидимую пользователем. В первом представлении, который загружается, добавьте:

- (void)viewWillAppear:(BOOL)animated
{
    NSNumber *orientationLeft = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
    NSNumber *orientationRight = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
    [[UIDevice currentDevice] setValue:orientationLeft forKey:@"orientation"];
    [[UIDevice currentDevice] setValue:orientationRight forKey:@"orientation"];
}