0

私の初期表示コントローラはナビゲーションコントローラであり、そのルートビューコントローラはUIPageViewControllerDataSourceプロトコルに準拠したUIViewControllerです。私のページのコンテンツは、ストーリーボードにシーンとスワイプファイルの両方を持つ3つのユニークなView Controllerです。ステータスバー起動時の白不透明

ルートビューコントローラのviewDidLoad()でナビゲーションバーを非表示にしています。

self.navigationController?.navigationBar.hidden = true 

アプリが起動すると、ステータスバーは白く不透明です。次のページにスクロールすると、半透明になり、ページの背景色が表示されます。

打ち上げの外観

enter image description here

外観次のページへ

enter image description here

をスワイプすると、誰かが私がここで何が起こっているかを理解する助けてくださいすることができ、それを修正する方法をしながら?もしそれが明らかでない場合、私は打ち上げから2番目の行動を望んでいます。ステータスバーは半透明で、ページの背景が表示されます。

IはviewDidLoad()

  • を試みた:UIApplication.sharedApplication().statusBarStyle = .LightContentルート・ビュー・コントローラにおいて
  • self.setNeedsStatusBarAppearanceUpdate()続く

    override func preferredStatusBarStyle() -> UIStatusBarStyle { 
        return .Default 
    } 
    

    ルート・ビュー・コントローラにおいて

  • viewDidLoad()に:

    override func viewWillAppear(animated: Bool) { 
        super.viewWillAppear(true) 
        self.navigationController?.navigationBar.barStyle = .Default 
        self.navigationController?.navigationBar.barTintColor = UIColor.clearColor() 
    } 
    
  • viewDidLoad()navigationBar.hidden以上)では:私はナビゲーションコントローラを削除し、ちょうどルートビューコントローラの初期ビューコントローラ、ステータスバーにする注意点としては

    self.navigationController?.navigationBar.barStyle = .Default 
    self.navigationController?.navigationBar.barTintColor = UIColor.clearColor() 
    

、予想通り半透明に見えます。

このquestionは類似していますが、解決策は一切なく、1年以上経過しています。ポスターに連絡したとき、ステータスバーの下に表示されると思っていました。私はそれがページビューコントローラのスクロール面とシームレスに動作するような方法でビューを管理できるかどうかはわかりません。

答えて

1

解決策が見つかりました。私の友人は、UIPageViewControllerのフレームについて考え始めるような提案をしました。これにより、ステータスバーの高さをつかんで、その分だけフレームを調整することができました。viewDidLoad

let pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! UIPageViewController 

// More pageViewController setup 

let statusBarHeight: CGFloat = UIApplication.sharedApplication().statusBarFrame.height 

let x = pageViewController.view.bounds.origin.x 
let y = pageViewController.view.bounds.origin.y - statusBarHeight 
let width = pageViewController.view.bounds.width 
let height = pageViewController.view.bounds.height + statusBarHeight 
    let frame = CGRect(x: x, y: y, width: width, height: height) 

pageViewController.view.frame = frame 

これを手動で調整する必要がなぜ私はまだ理解していません。 (うまくいけば、他の誰かが解決策/説明に来るだろう)しかし、私はこのコードのほうが誰かを助けてくれることを願っています。

0

私にとっては、メインビューのサブビューには、サブビューをステータスバーのサイズを押し下げていたトップ/ボトムレイアウトガイドに制限がありました。サブビューエッジの制約をメインビューのエッジに設定すると、それが固定されました。

関連する問題