仅在一个ViewController、objective C和iOS中显示/隐藏状态栏
我希望状态栏显示在ViewController的ViewWillExample()中,并在ViewWillEnglishe()中消失 我在用仅在一个ViewController、objective C和iOS中显示/隐藏状态栏,ios,objective-c,statusbar,Ios,Objective C,Statusbar,我希望状态栏显示在ViewController的ViewWillExample()中,并在ViewWillEnglishe()中消失 我在用 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO]; 但它在iOS 9.0中被弃用 我正在使用 UIApplication.shared.isStatusBarHidden = false 在swift中,但在目标C中,这是只读值 prefersStat
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
但它在iOS 9.0中被弃用
我正在使用
UIApplication.shared.isStatusBarHidden = false
在swift中,但在目标C中,这是只读值
prefersStatusBarHidden也不适用于我,因为我需要在viewWillEnglishe()函数中隐藏状态栏
有人能帮我吗 对于要更改状态栏可见性的每个视图控制器,您需要覆盖
首选状态栏hidden
。但要使其真正起作用,必须在项目的Info.plist
中添加以下键/值:
键:
查看基于控制器的状态栏外观
值:是
要控制
视图中状态栏的可见性,请执行以下操作:
var statusBarHidden = false
override func viewWillAppear() {
super.viewWillAppear()
statusBarHidden = false
self.setNeedsStatusBarAppearanceUpdate()
}
override func viewWillDisappear() {
super.viewWillDisappear()
statusBarHidden = true
self.setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden: Bool {
return statusBarHidden
}
对于Swift 3
override var prefersStatusBarHidden: Bool{
return true
}
并添加viewDidLoad()
为Objective-C编写示例(与@dennykim编写的SWIFT代码相同)
为BOOL创建属性
@属性(非原子,赋值)BOOL statusBarHidden
在info.plist中设置查看基于控制器的状态栏外观=是
转到ViewController并编写下一个代码:
-(无效)视图将显示:(BOOL)动画{
好问题!我最近一直在努力解决这些问题!您可以尝试在info.plist中添加值为“NO”的键“UIViewControllerBasedStatusBarAppearance”,如果需要,还可以调用func setNeedsStatusBarAppearanceUpdate()。我在info.plist中有“UIViewControllerBasedStatusBarAppearance-NO”,我需要翻译“UIApplication.shared.isStatusBarHidden=false"swift代码到objective CYes它肯定会工作,但我想避免在每个视图控制器中重写此方法,我知道在swift中是可能的,并假设在objective C中也是可能的,但找不到正确的函数要避免在每个视图控制器中重写此方法,可以使用在适当的地方使用方法和子类。这是正确的答案!但是我不需要viewDidLoad()
中的语句。没有它它它就可以工作。
override var prefersStatusBarHidden: Bool{
return true
}
self.modalPresentationCapturesStatusBarAppearance = true
[super viewWillAppear:animated];
self.statusBarHidden = TRUE;
[self setNeedsStatusBarAppearanceUpdate];
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
self.statusBarHidden = FALSE;
[self setNeedsStatusBarAppearanceUpdate];
}
- (BOOL)prefersStatusBarHidden {
return self.statusBarHidden;
}