Скрыть строку состояния в IOS 9
Как скрыть строку состояния в IOS 9?
Теперь это устарело:
[UIApplication sharedApplication] setStatusBarHidden:YES];
7 ответов
Свифта-3
override var prefersStatusBarHidden: Bool {
return true
}
Я получил информацию отсюда
+ Изменить
func
вvar
удалять
()
+ Изменить
->
в:
Это работает, потому что вычисляемая переменная имеет функцию получения, поэтому функция, которую вы реализовывали раньше, просто превращается в функцию получения
2016 года: простая вещь, как
В вашем info.plist добавьте следующие два свойства для statusBar Hidden
Просмотр внешнего вида строки состояния на основе контроллера (логическое значение: НЕТ)
Строка состояния изначально скрыта (логическое значение: ДА)
По источнику
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
или же
Старые ответы! ...
добавлять
application.statusBarHidden
вdidFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. application.statusBarHidden = YES; return YES; }
и добавить
в
info.plist
Добавь этоView controller-based status bar appearance
задаватьNO
View controller-based status bar appearance = NO
скрытый набор на основе viewcontroller
Добавьте метод в вашем контроллере представления.
Цель -C
- (BOOL)prefersStatusBarHidden {
return YES;
}
Быстро до 2
override func prefersStatusBarHidden() -> Bool {
return true
}
(ХОРОШО) 2016.5.17 в iOS 9.0 работала хорошо.
Обновленный ответ
- Перейти к файлу Info.plist
- Наведите указатель мыши на одну из этих строк, и появятся кнопки (+) и (-).
- Нажмите кнопку плюс, чтобы добавить новый ключ
- Введите начало с заглавной буквы V, и автоматически первым выбором будет " Просмотр внешнего вида строки состояния на основе контроллера". Добавьте это как КЛЮЧ.
- Установите ЗНАЧЕНИЕ на "НЕТ"
- Перейти к вам AppDelegate.m для Objective-C (для быстрого языка: AppDelegate.swift)
- Добавьте код внутри метода
Для Objective-C:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[application setStatusBarHidden:YES];
return YES;
}
Для Свифта:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
application.statusBarHidden = true
return true
}
В info.plist добавить следующие два свойства.
View controller-based status bar appearance (NO)
Status bar is initially hidden (YES)
Я знаю, что документация setStatusBarHidden:
не упоминает о том, что использовать вместо этого. Но заголовок UIApplication
делает.
// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]");
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_DEPRECATED_IOS(3_2, 9_0, "Use -[UIViewController prefersStatusBarHidden]");
Здесь указано, что вы должны использовать prefersStatusBarHidden
на UIViewController
и использовать стили панели состояния, основанные на контроллере представления.
Все, что вам нужно сделать сейчас, это настроить, должен ли контроллер представления показывать скрытую строку состояния. Вот так:
- (BOOL)prefersStatusBarHidden {
return YES;
}
Вот как вы легко можете вернуть контроль над статусной строкой для iOS 9+ и Swift 3+:
- добавлять
View controller-based status bar appearance
ключ сYES
значение дляInfo.plist
, Добавьте эту переменную в контроллер представления:
private var isStatusBarHidden = false { didSet { setNeedsStatusBarAppearanceUpdate() } }
Override
prefersStatusBarHidden
имущество:override var prefersStatusBarHidden: Bool { return isStatusBarHidden }
Вот и все. Теперь вы можете позвонить isStatusBarHidden = true
а также isStatusBarHidden = false
когда угодно.
Простым подходом было бы установить windowLevel
приложения должно быть либо нормальным, либо статусбаром в зависимости от ваших потребностей, поэтому для начала
Objective-C
Чтобы скрыть строку состояния
UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelStatusBar;
Показать строку состояния
UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelNormal;
Также добавьте Key
(Просмотреть внешний вид строки состояния на основе контроллера) с логическим значением NO.
Если по какой-то причине вам нужно View controller-based status bar appearance
равно YES
(например, чтобы строка состояния оставалась белой)
на AppDelegate's didFinishLaunchingWithOptions
метод или где бы вы ни настраивали ваш navigationController:
yourNavigationController.navigationBar.barStyle = .black
затем используйте удивительный ответ alex-staravoitau и добавьте этот код, где бы вы ни скрывали строку состояния:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Я не уверен, что это правильный путь для достижения этого результата, но это сработало для меня, и я надеюсь, что это поможет кому-то еще:)
В большинстве iOS это будет работать. Я тестировал с iOS 10.
- Открыть info.plist
- "Просмотр внешнего вида строки состояния на основе контроллера" установлен на "НЕТ"
- "Строка состояния изначально скрыта" установлена на ДА
- Готово