如何隐藏特定视图控制器中的状态栏?

时间:2017-01-26 19:28:13

标签: ios swift uistatusbar

我有3个视图控制器添加到pageViewController,所以我可以在3之间滚动。问题是我只想在1个viewControllers中显示状态栏。到目前为止,我可以向他们隐藏所有内容或在其中显示所有内容

我尝试了以下内容:

    private var isStatusBarHidden = false {
    didSet {
        setNeedsStatusBarAppearanceUpdate()
    }
}

    override var prefersStatusBarHidden: Bool {
        return isStatusBarHidden
}

我如何将VC作为子视图控制器添加到滚动视图中:

 let storyboard = UIStoryboard(name: "Main", bundle: nil)

    page1 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.feedViewController.rawValue) as! FeedViewController
    page1.view.translatesAutoresizingMaskIntoConstraints = false
    page1.delegate = self
    scrollView.addSubview(page1.view)
    addChildViewController(page1)
    page1.didMove(toParentViewController: self)

1 个答案:

答案 0 :(得分:2)

你有3个VC意味着所有3个ViewController将拥有viewDidAppear和viewWillDisappear代码

 override open func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)
        //It will show the status bar again after dismiss
        UIApplication.shared.isStatusBarHidden = true
    }


override open func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    //It will hide the status bar again after dismiss
    UIApplication.shared.isStatusBarHidden = false
}
override open var prefersStatusBarHidden: Bool {
    return true
}

将代码复制并粘贴到要隐藏状态栏的ViewController中。 那么它将会在你的viewDidAppear里面做什么,它会隐藏你的状态栏 一旦我们离开课程,它就会立即显示状态栏。

如果你的pageViewController是父视图,那么我们可以通过页面索引来完成 假设您要在第2页上显示状态栏并在第1页和第3页上隐藏。 所以我们可以在这个页面中做到这一点

PageDataSource Function {
   if(index == 1 || index == 3){
     UIApplication.shared.isStatusBarHidden = true
   }
   else{
     UIApplication.shared.isStatusBarHidden = false
  }
}

override open var prefersStatusBarHidden: Bool {
    return true
}

  override open func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    //It will hide the status bar again after dismiss
    UIApplication.shared.isStatusBarHidden = false
}

请尝试这个,让我知道它是否正常工作

谢谢

相关问题