[英]TableView scroll underlying top bar
一種解決方案是:將 table view 的contentInset
和scrollIndicatorInsets
設置為 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.