簡體   English   中英

TableView 滾動底層頂部欄

[英]TableView scroll underlying top bar

自從我將應用程序更新為 iOS 7 新 GUI 以來,我遇到了無法解決的問題。

我的應用程序包含一個可滾動的 TableView。 問題是 TableView 在頂部欄下方滾動,這意味着表格不考慮頂部欄並延伸到頂部,很難看。

在此處輸入圖片說明

我嘗試取消對“在頂部欄下延伸邊緣”的檢查,但它是一樣的。

我該如何解決這個問題?

一種解決方案是:將 table view 的contentInsetscrollIndicatorInsets設置為 top inset 20。 table view 仍然會覆蓋狀態欄,但是當一直滾動時它會完全可見。

如果您不喜歡該解決方案,並且希望在狀態欄后面有一個永久的空白區域,則必須更改固定/定位表格視圖頂部的方式,以允許狀態欄。 您如何執行此操作取決於您是否使用自動布局。 如果是,只需固定到頂部布局指南。 如果不是,則必須使用筆尖編輯器中提供的“delta”字段。

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

  • 將整個內容放入 UINavigationController 中,以便讓導航欄為我“運行干擾”。

  • 或者,將表格視圖控制器嵌入到自定義父視圖控制器中,以便我可以定位表格視圖的頂部。

在 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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM