繁体   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