2016-09-26 38 views
0

滾動我的UITableViewController與幾個項目使單元格出現在我的UIStatusBar後面。我試圖做一個使用這種方法的工作:UITableViewController和UIStatusbar

var bounds = self.view.bounds 
    bounds.origin.y -= 20.0; 
    self.view.bounds = bounds 
    // Create a solid color background for the status bar 



    let statusFrame = CGRect(x: 0, y: -20, width: bounds.size.width, height: 20) 
    let statusBar = UIView(frame: statusFrame) 
    statusBar.backgroundColor = UIColor.red 
    self.view.addSubview(statusBar) 

這將給我一個紅色的酒吧前滾動。它在一些滾動後會消失。我也嘗試將tableView頂部的contentInset設置爲UIApplication.shared.statusBarFrame.height,但是做了同樣的事情。

保持導航欄非常重要。另外我TableViewController嵌入在UINavigationController

任何想法?

+0

怎麼樣的狀態完成滾動時,仍隱藏在酒吧或顯示?什麼是你的平臺運行,只有iOS 8以上或所有版本? – ronan

+0

ios8及以上版本。它需要一直保持穩定。無論是否滾動。 @ronan – JVS

+0

你只是想改變狀態欄的背景顏色爲紅色,並確保它不會自動更改,對吧? – ronan

回答

1

的一種方法是,重構的UITableViewController並使它的UITableView並添加狀態欄下方頂約束。

另一種方法是更改​​狀態欄的顏色,如:

func setStatusBarBackgroundColor(color: UIColor) { 
    if let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView { 
     statusBar.backgroundColor = color 
    } 
} 

但要小心,因爲它是一個私有API。你的應用可能會被拒絕。

+0

我不確定如何在swift中使用等價物。如使用double valueForKey – JVS

+1

@JVS檢查更新後的代碼片段。 – Xchord

+0

我在statusBar – JVS

0

終於找到了答案:

創建一個自定義UIView,並添加它的navigationController的觀點:

let rect = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, 
    height: UIApplication.shared.statusBarFrame.height) 

    let bar = UIView(frame: rect) 
    bar.backgroundColor = UIColor.white 

    navigationController?.view.addSubview(bar) 

的作品就像一個魅力。

1

根據您的目的,您可以隱藏狀態欄。

override var prefersStatusBarHidden: Bool { 
    return true 
} 
相關問題