2016-05-26 12 views
0

スクロールで非表示にするためにナビゲーションバーが設定されていますが、スクロールするとステータスバーの背景色が表示され、 。私はそれが多くのアプリがそれを行う方法に似て欲しい。私のnavbarとステータスバーが白いテキストのオレンジ色の背景を持っていて、スクロールが起こって、navbarが隠れると、ステータスバーはオレンジ色の背景を保持する。Navbarを非表示にして、ステータスバーに背景を表示

アップデート1:

は、ビューに20のサブビューを追加しようとしましたが、そのは表示されません。 IBなしでアプリを作成しようとする私の最初の試みなので、何かが欠けている可能性があります。

私はこのコードを私のTableViewControllerに入れました。私はtableviewを試した。スーパービュー。それらのどれも働くように見えなかった。

let statusBarBG = UIView() 
     statusBarBG.backgroundColor = UIColor.rgb(248, green: 148, blue: 6) 
     super.view?.addSubview(statusBarBG) 
     super.view?.addContstraintsWithFormat("V:|[v0(20)]", views: statusBarBG) 
     super.view?.addContstraintsWithFormat("H:|[v0]|", views: statusBarBG) 

アップデート2:

だから、いくつかのことを試した後、私のビューが表示されますが、その際にユーザーがスクロールそれが表示されなくなりテーブルビューでのナビゲーションバーやスクロールの下で。

FeedTVController:のUITableViewController

let statusBarBG = UIView(frame: CGRect(x: 0.0, y: -44, width: UIScreen.mainScreen().bounds.width, height: 20)) 
      statusBarBG.backgroundColor = .redColor() //UIColor.rgb(248, green: 148, blue: 6) 
      self.view?.addSubview(statusBarBG) 

アプリの委任:

let feedController = FeedTVController() 
     let navigationController = UINavigationController(rootViewController: feedController) 
     let tabBarController = TabBarController() 
     tabBarController.setViewControllers([vc1, vc2, vc3], animated: true) 
     window?.rootViewController = tabBarController 
+1

:我々は1を作成し、ステータスバーの下になく、ナビゲーションバーの上にそれを配置する必要があるので、デフォルトでは

にはステータスバーの背景の表示はありません20ポイントの高さと正しい色のあなたのビュー? –

答えて

0

変更あなたのスーパーオレンジ(ViewControllerを表示)(または任意の色あなたはステータスバーのデフォルトとして欲しいの背景色

0

コードがないので、navBarを隠すことができる2通りの方法があります。

サブクラスを非表示にして、ユーザーがスクロールする量(Facebookなど)に相対的に隠れている場合:ナビゲーションバーをすべて隠す代わりに、画面の左下から20ポイントで非表示にします。

組み込みのアニメーション隠しでnavBarを非表示にしている場合:コンテナの上部に接続され、同じ背景色で20ポイントの高さを持つサブビューを追加すると、ナビゲーションバーが消えるとサブビューは頂点で。

+0

現在、私は後者をやっています。私はそれを行うべきサブビューを作成しようとしましたが、動作しません。私はそれを私の質問に加えます。 –

+0

これで、20ポイントの 'height'を持つUIViewを追加し、AutoLayout制約をコンテナの上部に貼り付けるように設定する必要があります。 – Armin

+0

それは私がやったことです。 –

0

この場合、私は一日中見回しても適切な解決策を見つけることができませんでした。私が解決策を考案した論理的な考え方で、同じ問題を抱えている人々を助けることを願っています。あなただけの上部にあるのUIViewを配置することはできません

On viewDidLoad() 

    self.navigationController?.hidesBarsOnSwipe = true 

    /* creates a View using the navigation bar frame to place under the status bar but above the navigation bar */ 

    let statusBarView = UIView() 
    statusBarView.backgroundColor = .blue 
    statusBarView.frame = UIApplication.shared.statusBarFrame 
    UIApplication.shared.keyWindow?.addSubview(statusBarView) 
関連する問題