2015-10-17 134 views
2

由於我更新了我的應用程序到iOS 7新的GUI我有一個問題,我無法解決。TableView滾動底層頂欄

我的應用程序包含一個可滾動的TableView。麻煩的是,TableView滾動底層頂部欄,意味着桌面不考慮頂部欄,並延伸至頂部,看起來很醜。

enter image description here

我嘗試了「擴展邊緣下最熱門酒吧」刪除檢查,但它是相同的。

我該如何解決這個問題?

+1

iOS 7?你知道我們現在可以使用iOS 9嗎? – matt

+0

應用程序已更新爲iOS9,但自iOS7以來我有這個「bug」。 –

+0

好的,但對我們來說,瞭解您實際連接的系統至關重要,因爲這是決定這種行爲的原因。 – matt

回答

1

一個解決方案是:將表格視圖的contentInsetscrollIndicatorInsets設置爲頂部插入爲20.表格視圖仍然在狀態欄下方,但是在滾動時它將完全可見。

如果您不喜歡這種解決方案,並且您希望在狀態欄後面有一個永久性空白區域,則必須更改固定表格視圖頂部的方式以允許使用狀態欄。你如何做到這一點取決於你是否使用自動佈局。如果是,請將其固定到頂部佈局指南。如果您不是,則必須使用筆尖編輯器中提供的「delta」字段。

但是,如果您使用的是UITableViewController,那麼您並不負責表視圖的頂部;它是一個全屏視圖,它是視圖控制器的主視圖。實際上,這是一個相當麻煩的情況。我使用了兩種解決方案:

  • 把整個事情放到UINavigationController中,以便讓導航欄爲我「運行干涉」。或者,將表視圖控制器嵌入到自定義父視圖控制器中,以便我可以定位表視圖的頂部。

+0

它可能會幫助你閱讀我寫的關於從iOS 6過渡到iOS 7的文章:http://radar.oreilly.com/2013/09/making-the-leap-to-ios-7.html – matt

+0

好的,'contentInset'將表格向下移動20px,這很好,但是,滾動,表格仍然覆蓋頂部欄。 –

+0

我在回答中說過。我告訴過你如果你不喜歡這個,該怎麼辦。 – matt

0

在UINavigationController的我創建了一個UIView的,這下狀態欄但在嵌入控制器(表)的前面進入,所以表消失這一觀點背後和狀態欄是總在最前面。

var patch: UIView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    patch = UIView(frame: CGRectMake(0, 0, view.bounds.width, 20)) 
    patch.backgroundColor = UIColor.redColor() 
    self.view.addSubview(patch) 
} 

然後我做的時候屏幕變成景觀之消失(在iOS9,狀態欄自動消失景觀),並在屏幕變成在人像重新出現。

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
    if UIDevice.currentDevice().orientation.isLandscape.boolValue { 
     patch.hidden = true 
    } else { 
     patch.hidden = false 
    } 
}