[英]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.