Как в ios7 скрыть statusbar программно? Я использую XCode 4.6.1
(ios6.1) и я хочу реализовать это в самом XCode.
Как программно скрыть строку состояния в iOS 7?
Ответы (12)
в iOS7 вы должны реализовать в своем viewController
- (BOOL)prefersStatusBarHidden {
return YES;
}
вы можете скрыть строку состояния, чтобы установить значение ключа «Просмотр внешнего вида строки состояния на основе контроллера» НЕТ в plist. Это самый простой способ.
или Вы можете скрыть в коде, используя свойство statusBarHidden класса UIApplication.
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Свифт 3.0
Скрыть строку состояния для любого конкретного контроллера представления
override var prefersStatusBarHidden: Bool {
get {
return true
}
}
Скрыть статус в приложении
UIApplication.shared.isStatusBarHidden = true
и установите значение ключа «Просмотр внешнего вида строки состояния на основе контроллера» НЕТ в информационном списке проекта.
Чтобы скрыть для определенного ViewController (а затем снова включить), когда View controller-based status bar appearance
установлено на NO
:
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
}
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
}
Если вам нужно динамически скрыть/показать его на данном контроллере представления, вы можете сделать что-то вроде этого.
(Хотя я рекомендую просто использовать - (BOOL)prefersStatusBarHidden
, чтобы вернуть ваши предпочтения, если вам не нужно их менять.)
// view controller header
@interface MyViewController : UIViewController {
BOOL shouldHideStatusBar;
}
@end
@implementation
- (BOOL)prefersStatusBarHidden {
return shouldHideStatusBar; // backed by your instance variable
}
- (void)setPrefersStatusBarHidden:(BOOL)hidden {
shouldHideStatusBar = hidden;
// Don't call this on iOS 6 or it will crash since the
// `setNeedsStatusBarAppearanceUpdate` method doesn't exist
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
// [self setNeedsStatusBarAppearanceUpdate]; // (if Xcode 5, use this)
}
@end
В случае iOS >= 7.0 используйте следующий код:
Синтаксис:
// Present in UIViewController of UIKit Frameworks
- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0); // Defaults to NO
Применение:
- (BOOL)prefersStatusBarHidden {
return YES;
}
В iOS ‹ 7.0 используйте следующий код:
Синтаксис:
// Present in UIApplication of UIKit Frameworks
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);
Применение:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
Свифт 4.1
шаг 1. Установите для View controller-based status bar appearance
в info.plist
значение ДА.
Шаг 2. Введите код в UIViewController
, строка состояния скроется, когда вы представите UIViewController
.
private var statusBarIsHidden = false
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
statusBarIsHidden = true
setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden: Bool {
return statusBarStatus
}
Попробуй это
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Если кому-то нужен самый обновленный способ сделать это (Swift 2.1 и последний Xcode 7.2)
Установите для параметра «Просмотр внешнего вида строки состояния на основе контроллера значение NO в вашем info.plist».
UIApplication.sharedApplication().statusBarHidden = true // помещаем куда-нибудь внутрь делегата приложения (applicationWill или DidFinishLaunchingWithOptions:
Мой опыт показывает, что вам нужен как код, так и значение в файле info.plist в iOS 9/Xcode 7.3.
Добавьте это в свой метод viewDidLoad.
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Добавьте это в свой файл info.plist как логическое значение и установите для него значение NO:
View controller-based status bar appearance
При использовании iOS 9.0+ и Swift. Если вы хотите, чтобы строка состояния была скрыта в некоторых контроллерах представления, но не во всех, убедитесь, что значение View controller-based status bar appearance
в Info.plist
установлено на YES
, иначе одни и те же параметры будут использоваться во всех контроллерах представления.
И переопределить prefersStatusBarHidden
в подклассе UIViewController
override var prefersStatusBarHidden: Bool {
get {
return true
}
}
Аналогично можно сделать, чтобы изменить preferredStatusBarStyle
override var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
на быстром 4:
UIApplication.shared.isStatusBarHidden = ..true/false