答案 0 :(得分:72)
- (BOOL)prefersStatusBarHidden {
return YES;
}
答案 1 :(得分:32)
您可以隐藏状态栏以在plist中设置键值“查看基于控制器的状态栏外观”NO。这是最简单的方法。
或者您可以使用UIApplication类的属性statusBarHidden隐藏代码。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Swift 3.0
隐藏任何特定视图控制器的状态栏
override var prefersStatusBarHidden: Bool {
get {
return true
}
}
在整个应用程序中隐藏状态
UIApplication.shared.isStatusBarHidden = true
并在项目的信息plist中设置键值“View controller-based status bar appearance”NO。
答案 2 :(得分:18)
- (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;
}
答案 3 :(得分:5)
在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];
}
答案 4 :(得分:3)
如果你需要动态地在给定的视图控制器上隐藏/显示它,你可以做这样的事情。
(尽管如果您不需要更改,我建议您只使用- (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
答案 5 :(得分:1)
如果是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];
答案 6 :(得分:1)
第1步。。在View controller-based status bar appearance
中将info.plist
设置为是
第二步。。在您的UIViewController
中键入一些代码,当您显示UIViewController
时,状态栏将隐藏。
private var statusBarIsHidden = false
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
statusBarIsHidden = true
setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden: Bool {
return statusBarStatus
}
答案 7 :(得分:0)
试试这个
[[UIApplication sharedApplication] setStatusBarHidden:YES];
答案 8 :(得分:0)
如果有人想要最新的方式(Swift 2.1和最新的Xcode 7.2)
在info.plist中设置"查看基于控制器的状态栏外观为NO"
UIApplication.sharedApplication()。statusBarHidden = true //在某处放置app delegate(applicationWill或DidFinishLaunchingWithOptions:
答案 9 :(得分:0)
我的经验是你需要iOS 9 / Xcode 7.3中info.plist文件中的代码和值。
将此添加到 viewDidLoad 方法。
join t3 in ctx.T3
on new { A = t2.pk2, B = (DateTime?)null }
equals new { A = t3.fk2, B = t3.x }
将此信息作为布尔值添加到info.plist文件中,并将其设置为NO:
[[UIApplication sharedApplication] setStatusBarHidden:YES];
答案 10 :(得分:0)
如果使用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
}
}
答案 11 :(得分:0)
on swift 4:
UIApplication.shared.isStatusBarHidden = ..true/false