2017-01-26 11 views
0

3つのビューコントローラがpageViewControllerに追加されているので、3つの間をスクロールすることができます。問題は、viewControllersの1つのみでステータスバーを表示することです。これまでのところ、私はそれらのすべてを隠すことができ、それらのすべてを見ることができます。特定のView Controllerでステータスバーを非表示にする方法は?

私は次のことを試してみました:

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

    override var prefersStatusBarHidden: Bool { 
     return isStatusBarHidden 
} 

私は、スクロールビューにVCのように、子View Controllerを追加する方法:

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) 

答えて

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 
} 

これらのViewControlleステータスバーを非表示にするには、をクリックします。 それはあなたのviewDid内にあります。それはあなたのステータスバーを隠すでしょう そしてクラスを離れるとすぐにステータスバーが表示されます。

あなた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 
} 

これを試してみて、その作業か

は、私は私のplistに言及する必要がありますしようとする前に私は、この持って

+0

ありがとう場合は私に知らせてください: ビューの共同をコントローラベースのステータスバーの外観= NO ステータスバーは最初は非表示です=いいえ これはまったく変更する必要がありますか? – user7097242

+0

私はplistで言及する必要はないと思っていますが、できます。私のアプリケーションでは、アプリケーション全体にステータスバーを表示する必要があるため、Viewコントローラベースのステータスバーの外観= YESを設定しています。しかし、あなたの写真を開くときに私はあなたを隠す必要があります、私はちょうど上に書かれたコードを書いて、それはうまく動作しています。 –

+0

私は最初の部分を試してもうまくいかなかった。スーパービューにステータスバーを追加しているようです。 2番目の部分は、私はあなたが作成した機能を理解していない(これに本当に新しい!)=] – user7097242

関連する問題