Я хочу, чтобы строка состояния отображалась в обеих ориентациях в iOS 8; он правильно отображается в iOS 7.
navigationController.isNavigationBarHidden
возвращает NO.
Почему IOS 8 делает это?
Я хочу, чтобы строка состояния отображалась в обеих ориентациях в iOS 8; он правильно отображается в iOS 7.
navigationController.isNavigationBarHidden
возвращает NO.
Почему IOS 8 делает это?
Попробуйте это
Добавьте ниже код в 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
Чтобы отобразить строку состояния в ландшафтном режиме в 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
}
Решение Jageen, вероятно, является лучшим, только с одним незначительным изменением, т.е. вместо использования viewDidLoad
, лучше использовать application:didFinishLaunchingWithOptions:
.
Это в основном двухэтапный процесс:
1). Установите "Просмотр состояния панели управления на основе контроллера" на "НЕТ" в файле проекта Info.plist.
2). Принудите статус скрытой статусной строки в НЕТ, в application:didFinishLaunchingWithOptions:
, используя следующий код:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
И, вуаля!
Примечание. Важно использовать оба оператора setStatusBarHidden:withAnimation
выше, чтобы заблокировать скрытое состояние строки состояния.
У меня была такая же проблема! Исправлено при употреблении этого файла viewDidLoad
[self setNeedsStatusBarAppearanceUpdate];
И это для самой реализации
-(BOOL)prefersStatusBarHidden{
return NO;
}
Они удерживают нас с прибылью, предоставляя нам больше работы.
или...
Они внесли другие изменения, которые заставляют биты занимать больше места, чем раньше. С iOS 7 и появлением таких вещей, как "Руководство по верхнему макету", простое доступность строки состояния на экране прокрутки вниз, восстановление пространства состояния, которое можно использовать, и другие небольшие подсказки, которые многие люди предсказывали, что строка состояния может быть постепенно прекращается как стандартная часть пользовательского интерфейса.
Существует также довольно много шума о новых размерах устройств из-за изменений, внесенных ими в iOS 8, что упрощает кодирование для группы разных размеров.
Это чистая спекуляция, но я не думаю, что они будут отображаться в строке состояния в iOS 8.
Это не проблема, а особенность iOS 8. Строка состояния будет скрыта в ландшафтном режиме в iOS 8, даже приложения Apple также имеют одинаковое поведение.
Swift 3
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.setStatusBarHidden(true, with: .none)
UIApplication.shared.setStatusBarHidden(false, with: .none)
///
}
и добавьте внутри Info.plist
this:
UIViewControllerBasedStatusBarAppearance
логическое значение NO
Swift 3 (по состоянию на 2 июня 2017 года)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear()
self.setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden : Bool {
return false
}
Мы исправили это, выполнив описанные выше шаги и убедившись, что обе стороны включены как влево, так и вправо.
Информация о проекте/цели/развертывании
Мы решили это, заставив пользователя изменить ориентацию, невидимую пользователем. В первом представлении, который загружается, добавьте:
- (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"];
}