2

自从我将应用程序更新到 iOS 7 新 GUI 后,我遇到了一个无法解决的问题。

我的应用程序包含一个可滚动的 TableView。问题是 TableView 滚动底层顶栏,这意味着表格不考虑顶栏并延伸到顶部,很难看。

在此处输入图像描述

我尝试删除“在顶部条下延伸边缘”的检查,但它是相同的。

我该如何解决这个问题?

4

2 回答 2

1

一种解决方案是:设置表格视图的contentInset顶部scrollIndicatorInsets插图为 20。表格视图仍将在状态栏下方,但在一直滚动时将完全可见。

如果您不喜欢该解决方案,并且希望在状态栏后面有一个永久空白区域,则必须更改固定/定位表格视图顶部的方式,以允许状态栏。如何执行此操作取决于您是否使用自动布局。如果你是,只需固定到顶部布局指南。如果不是,则必须使用 nib 编辑器中提供的“delta”字段。

但是,如果您使用的是 UITableViewController,则您不负责 table view 的顶部;它是一个全屏视图,它是视图控制器的主视图。实际上,这是一个相当麻烦的情况。我采取了两种解决方案:

  • 将整个东西放入 UINavigationController 中,以便让导航栏为我“运行干扰”。

  • 或者,将表格视图控制器嵌入到自定义父视图控制器中,以便我可以定位表格视图的顶部。

于 2015-10-17T15:01:41.537 回答
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
    }
}
于 2015-10-17T20:30:40.800 回答