[英]iOS : Hide status bar in entire app programmatically not even through plist
[英]How to hide the status bar programmatically in iOS 7?
在iOS7中,您应该在viewController中实现
- (BOOL)prefersStatusBarHidden {
return YES;
}
您可以隐藏状态栏以在plist中设置键值“基于视图控制器的状态栏外观”为NO。 这是最简单的方法。
或者,您可以使用UIApplication类的statusBarHidden属性隐藏在代码中。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
斯威夫特3.0
隐藏任何特定视图控制器的状态栏
override var prefersStatusBarHidden: Bool {
get {
return true
}
}
在应用程序中隐藏状态基础
UIApplication.shared.isStatusBarHidden = true
并在项目的信息列表中设置键值“基于视图控制器的状态栏外观”为否。
- (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 <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];
步骤1。 将info.plist
View controller-based status bar appearance
设置为YES
第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)
在“ info.plist”中将“基于View Controller的状态栏外观设置为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
}
}
快速4:
UIApplication.shared.isStatusBarHidden = ..true/false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.