仅在一个 ViewController、Objective C、iOS 中显示/隐藏状态栏

Sal*_*mua 4 objective-c statusbar ios

我希望状态栏显示在 viewWillAppear() 中并消失在我的 ViewController 的 viewWillDisappear() 中

我正在使用

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
Run Code Online (Sandbox Code Playgroud)

但它在 iOS 9.0 中已被弃用

我在用

UIApplication.shared.isStatusBarHidden = false
Run Code Online (Sandbox Code Playgroud)

在 swift 中,但在目标 C 中,这是只读值......

prefersStatusBarHidden 也对我不起作用,因为我需要在 viewWillDisappear() 函数中隐藏状态栏

-(BOOL)prefersStatusBarHidden{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

有谁能够帮助我?

den*_*kim 5

对于每个要更改状态栏可见性的视图控制器,您需要覆盖prefersStatusBarHidden. 但是,要使其真正起作用,您必须在项目的 中添加以下键/值Info.plist

钥匙: View controller-based status bar appearance

价值: YES


要控制在状态栏上的知名度viewWillAppearviewWillDisappear你可以这样做:

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
}
Run Code Online (Sandbox Code Playgroud)

  • 为了避免在每个视图控制器中重写此方法,您可以使用这些方法对 UIViewController 进行子类化,并在适当的情况下使用该子类。 (2认同)