【问题标题】:TableView scroll underlying top barTableView 滚动底层顶栏
【发布时间】:2016-01-16 05:34:33
【问题描述】:

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

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

我尝试取消选中“在顶部栏下延伸边缘”,但它是一样的。

我该如何解决这个问题?

【问题讨论】:

  • iOS 7?你知道我们现在升级到 iOS 9 了吗?
  • 应用程序已更新到 iOS9,但我从 iOS7 开始就有这个“错误”。
  • 好的,但是了解您实际链接的系统对我们来说至关重要,因为这是决定这种行为的因素。

标签: ios swift uitableview ios7 ios7-statusbar


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 阅读这篇我写的关于从 iOS 6 过渡到 iOS 7 的文章可能会对您有所帮助:radar.oreilly.com/2013/09/making-the-leap-to-ios-7.html
    • 好的,contentInset 将表格向下移动 20 像素,这很好,但是滚动时,表格会一直覆盖在顶部栏上。
    • 我在回答中说过。我告诉过你如果你不喜欢怎么办。
    • 但是我正在使用 UITableViewController 所以我不能使用约束;它有全屏表格,如何对控制器说“在顶部保留 20 像素”?我在 Storyboard 中尝试过,使用.contentSize.bounds,但什么也没有……
    • 好的,很好的答案。我自己也有同样的问题。在那种情况下,信不信由你,我通常做的是将整个事情放入 UINavigationController 中,以便让导航栏为我“运行干扰”。如果您不想这样做,并且仍然想要与以前完全相同的界面,则必须将表视图控制器嵌入到自定义父视图控制器中,以便您可以定位表格视图的顶部!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    相关资源
    最近更新 更多