在我的iOS视频应用中,状态栏隐藏在一些视图控制器中。我已经使用以下代码做到了这一点。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
它适用于iOS 5和iOS 6,但不适用于iOS 7。 我在特定的视图控制器中尝试了这个,
Eg:
-(BOOL)prefersStatusBarHidden { return YES; }
它工作得很好,但是我不能在父视图控制器中再次显示状态栏。
在我的iOS视频应用中,状态栏隐藏在一些视图控制器中。我已经使用以下代码做到了这一点。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
它适用于iOS 5和iOS 6,但不适用于iOS 7。 我在特定的视图控制器中尝试了这个,
Eg:
-(BOOL)prefersStatusBarHidden { return YES; }
它工作得很好,但是我不能在父视图控制器中再次显示状态栏。
当前回答
在Info.plist中添加以下内容:
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
其他回答
要回答Susitha的问题:使用setNeedsStatusBarAppearanceUpdate。这将调用prefersStatusBarHidden来刷新你想要的状态栏状态。试试这个:
@property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early
- (BOOL)prefersStatusBarHidden {
return self.isHideStatusBar;
}
- (void)someMethod {
// triggered by an event or user action
[self setHideStatusBar:YES];
[self setNeedsStatusBarAppearanceUpdate];
}
如果您想再次看到状态栏,请将属性hideStatusBar(或任何您所调用的属性)设置为NO。通过另一个调用来间接调用preferStatusBarHidden
[self setNeedsStatusBarAppearanceUpdate]
你应该将这个值添加到plist: "View controller-based status bar appearance"并将其设置为"NO"。
为了更好地理解,添加一些带有评论的照片:
App在任何更改前
在名为“支持文件”的Project Navigator文件夹中找到,然后单击*。plist文件
之后你会得到不同的设置你的应用程序显示。你需要添加2个键UIStatusBarHidden和UIViewControllerBasedStatusBarAppearance。你可以简单地点击+按钮
按下+键后,你可以选择其中一个键开始打字。
正确的版本:
最后,在应用这些变化之后:
另外,你可以在这里找到另一种解决方案
以下是Swift版本(iOS9之前):
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}
这也适用于(iOS7+):
override func prefersStatusBarHidden() -> Bool {
return true
}
你还需要调用:
setNeedsStatusBarAppearanceUpdate()
在viewDidLoad()中。
注意,如果你使用SplitView控制器,或者其他容器视图控制器,你还需要让它在发送childViewControllerForStatusBarHidden时返回你的类。一种方法是为statusController设置一个公共弱变量,并在这个被重写的方法中返回它。
固定解决方案SWIFT 3+ (iOS 9, 10)
1-在信息。请在属性下面设置
2-粘贴下面的代码到根控制器,以
private var isStatusBarHidden = true {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden: Bool {
return isStatusBarHidden
}
你可以调用isStatusBarHidden = true和isStatusBarHidden = false来隐藏/显示状态栏