【发布时间】:2013-10-04 18:18:13
【问题描述】:
【问题讨论】:
标签: ios7 statusbar ios6.1 iphone ios7 hide statusbar ios6.1
【问题讨论】:
标签: ios7 statusbar ios6.1 iphone ios7 hide statusbar ios6.1
在 iOS7 中你应该在你的 viewController 中实现
- (BOOL)prefersStatusBarHidden {
return YES;
}
【讨论】:
您可以隐藏状态栏以在plist中设置键值“查看基于控制器的状态栏外观”NO。这是最简单的方法。
或者您可以使用 UIApplication 类的属性 statusBarHidden 在代码中隐藏。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Swift 3.0
隐藏任何特定视图控制器的状态栏
override var prefersStatusBarHidden: Bool {
get {
return true
}
}
在整个应用程序中隐藏状态
UIApplication.shared.isStatusBarHidden = true
并在项目的info plist中设置键值“查看基于控制器的状态栏外观”NO。
【讨论】:
- (void)viewDidLoad
{
[super viewDidLoad];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
{
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
else
{
// iOS 6
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}
}
// Add this method
- (BOOL)prefersStatusBarHidden {
return YES;
}
【讨论】:
当View controller-based status bar appearance 设置为NO 时隐藏特定的ViewController(然后重新打开):
-(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
语法:
// Present in UIApplication of UIKit Frameworks
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);
用法:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
【讨论】:
step1. 将info.plist 中的View controller-based status bar appearance 设置为YES
step2. 在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)
在 info.plist 中将“基于视图控制器的状态栏外观设置为 NO”
UIApplication.sharedApplication().statusBarHidden = true // 将应用程序委托放入某处(applicationWill 或 DidFinishLaunchingWithOptions:
【讨论】:
我的经验是,iOS 9 / Xcode 7.3 中的 info.plist 文件中的代码和值都需要。
将此添加到您的 viewDidLoad 方法中。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
将此作为布尔值添加到您的 info.plist 文件中并将其设置为 NO:
View controller-based status bar appearance
【讨论】:
如果使用 iOS 9.0+ 和 Swift。如果您想在某些视图控制器中隐藏状态栏,但不是全部 - 请确保将 Info.plist 中的 View controller-based status bar appearance 值设置为 YES 否则将在所有视图控制器中使用相同的参数。
并在UIViewController 的子类中覆盖prefersStatusBarHidden
override var prefersStatusBarHidden: Bool {
get {
return true
}
}
类似的可以改变preferredStatusBarStyle
override var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
【讨论】:
在 Swift 4 上:
UIApplication.shared.isStatusBarHidden = ..true/false
【讨论】: