我有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)
答案 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
}
请尝试这个,让我知道它是否正常工作
谢谢