Как вы скрываете строку состояния в ios 9?
Теперь это устарело:
[UIApplication sharedApplication] setStatusBarHidden:YES];
Как вы скрываете строку состояния в ios 9?
Теперь это устарело:
[UIApplication sharedApplication] setStatusBarHidden:YES];
Свифта-3
override var prefersStatusBarHidden: Bool {
return true
}
Я получил информацию из здесь
Измените func
на var
Удалить ()
Измените ->
на :
Это работает, потому что вычисленная переменная имеет функцию getter, поэтому функция, которую вы реализовали, просто превращается в функцию getter
2016 и далее: простые вещи, такие как
На вашем info.plist добавьте следующие два свойства для statusBar Hidden
Просмотр состояния строки состояния на основе контроллера (Boolean: NO)
Строка состояния изначально скрыта (Boolean: YES)
По источнику
<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;
}
и добавьте
in info.plist
добавьте этот View controller-based status bar appearance
набор NO
View controller-based status bar appearance = NO
скрытый набор на основе viewcontroller
Добавьте метод в свой контроллер.
Цель -C
- (BOOL)prefersStatusBarHidden {
return YES;
}
Swift до 2
override func prefersStatusBarHidden() -> Bool {
return true
}
(GOOD) 2016.5.17 в iOS 9.0 работал хорошо.
Обновленный ответ
Для Objective-C:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[application setStatusBarHidden:YES];
return YES;
}
Для Swift:
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()
}
}
Заменить свойство prefersStatusBarHidden
:
override var prefersStatusBarHidden: Bool {
return isStatusBarHidden
}
Что это. Теперь вы можете звонить isStatusBarHidden = true
и isStatusBarHidden = false
, когда захотите.
Если по какой-то причине вам понадобится View controller-based status bar appearance
, равный YES
(например, чтобы сохранить строку состояния белой)
в приложении AppDelegate didFinishLaunchingWithOptions
или везде, где вы настраиваете свой навигационный контроллер:
yourNavigationController.navigationBar.barStyle = .black
затем используйте alex-staravoitau удивительный ответ и добавьте этот код, где бы вы ни скрывали строку состояния:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Я не уверен, что это правильный способ достичь этого результата, но это сработало для меня, и я надеюсь, что это тоже поможет кому-то еще:)
В большинстве iOS он будет работать. Я тестировал с iOS 10.
windowLevel
подходом было бы установить, что windowLevel
приложения является либо нормальным, либо statusBar на основе ваших потребностей, поэтому для начала
Objective-C
Скрыть строку состояния
UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelStatusBar;
Показать строку состояния
UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelNormal;
Также добавьте Key
(вид на панели управления на основе контроллера) с логическим значением NO.