2016-03-04 36 views
-2

我怎樣才能顏色狀態欄我得到了消失的時候我滾動我的表,但在狀態欄電池去一個導航欄...如何給狀態欄上色?

在這裏有我的導航控制器

class NavigationController : UINavigationController 
{ 
    override func viewDidLoad() 
    { 
      super.viewDidLoad() 
      UINavigationBar.appearance().barTintColor = Utility().coloreTitolo() 
      UINavigationBar.appearance().translucent = false; 
      UINavigationBar.appearance().tintColor = UIColor.whiteColor() 
      navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 
} 

我試試這個代碼但是當我向下滾動視圖顯示太...

func scrollViewDidScroll(scrollView: UIScrollView) 
{ 
    let statusBar = UIView(frame: 
     CGRect(x: 0.0, y: 0.0, width: UIScreen.mainScreen().bounds.size.width, height: 20.0) 
    ) 
    statusBar.backgroundColor = Utility().coloreTitolo() 
    statusBar.tag = 100; 

    if(scrollView.panGestureRecognizer.translationInView(scrollView).y > 0) 
    { 
     self.view.addSubview(statusBar) 
    } 
    else 
    { 
     let subViews = self.navigationController?.navigationBar.subviews 
     for subview in subViews! 
     { 
      if (subview.tag == 100) { 
       subview.removeFromSuperview() 
      } 
     } 
    } 
} 
+0

你們是不是要顏色在狀態欄中的文本 –

回答

1

我不能正確理解你的問題的措辭,但是從我收集到你想使你的UINavigationBar的白色的背景,所以你看不到物體通過在它後面。

嘗試添加以下內容到在viewWillAppear中()函數的ViewController(S):

let view = UIView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.mainScreen().bounds.size.width, height: 20.0)) 
    view.backgroundColor = UIColor.whiteColor() 

    self.view.addSubview(view) 

告訴我,如果你的作品。

編輯: 這是我放在一起,但我沒有嘗試過,所以我不知道結果。

override func viewDidLoad() { 
    super.viewDidLoad() 

    NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: "testForHidden", userInfo: nil, repeats: true) 
} 

func testForHidden() { 

    let fakebar = UIView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.mainScreen().bounds.size.width, height: 20.0)) 
    fakebar.backgroundColor = UIColor.whiteColor() 

    switch navigationController?.navigationBarHidden { 
    case true?: 
     self.view.addSubview(fakebar) 
    case false?: 
     fakebar.removeFromSuperview() 
    default: break 
    } 

} 
+0

它工作,但我不向上滾動,我得到了什麼?此導航欄下的視圖...我希望此視圖僅在導航欄「隱藏」時出現 –

+0

@MarcoCastano你總是可以使用'NSTimer'運行一個函數來檢查你是否滾動過一個點,如果你已經到了那個點,那麼使用'if'語句來運行代碼功能。 –

+0

你可以寫一些代碼嗎?我添加和編輯,但無法弄清楚這一點...:/ –

1

狀態欄沒有顏色:它是透明的。如果您希望顏色通過狀態欄顯示,請在狀態欄所在的位置(即主視圖的前20個像素)放置具有該顏色的視圖。

注意,當導航欄消失在這個屏幕上投,背景顏色顯示,通過狀態欄:

enter image description here

這與約束的配置完全完成故事板;不需要代碼。表格視圖的頂部被有效地固定到頂部佈局指南的底部,因此它停在狀態欄上,我們看到背後的背景色,爲狀態欄着色。 (但是,對於表格視圖,通常的方法是調整contentInset(和scrollIndicatorInsets)。行內容仍然會滾動到狀態欄的後面,但是當您一直滾動時,頂行將完全可見。在其下方)

+0

我遇到了同樣的問題,我說#Charles ...:/ 如何才能使此視圖僅在我的導航欄「隱藏」時出現? –

+0

添加了一個截屏視頻,演示了這可以如何工作。 – matt

+0

#matt如何更改我的指標插入和內容插入以使此工作? –

1

查爾斯Truluck的答案類似,你可以這樣做:

if navigationBar.hidden == false { 
    let view = UIView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.mainScreen().bounds.size.width, height: 20.0)) 
    view.backgroundColor = UIColor.whiteColor() 

    self.view.addSubview(view) 
}