2015-10-17 91 views
2

由于我更新了我的应用程序到iOS 7新的GUI我有一个问题,我无法解决。TableView滚动底层顶栏

我的应用程序包含一个可滚动的TableView。麻烦的是,TableView滚动底层顶部栏,意味着桌面不考虑顶部栏,并延伸至顶部,看起来很丑。

enter image description here

我尝试了“扩展边缘下最热门酒吧”删除检查,但它是相同的。

我该如何解决这个问题?

+1

iOS 7?你知道我们现在可以使用iOS 9吗? – matt

+0

应用程序已更新为iOS9,但自iOS7以来我有这个“bug”。 –

+0

好的,但对我们来说,了解您实际连接的系统至关重要,因为这是决定这种行为的原因。 – matt

回答

1

一个解决方案是:将表格视图的contentInsetscrollIndicatorInsets设置为顶部插入为20.表格视图仍然在状态栏下方,但是在滚动时它将完全可见。

如果您不喜欢这种解决方案,并且您希望在状态栏后面有一个永久性空白区域,则必须更改固定表格视图顶部的方式以允许使用状态栏。你如何做到这一点取决于你是否使用自动布局。如果是,请将其固定到顶部布局指南。如果您不是,则必须使用笔尖编辑器中提供的“delta”字段。

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

  • 把整个事情放到UINavigationController中,以便让导航栏为我“运行干涉”。或者,将表视图控制器嵌入到自定义父视图控制器中,以便我可以定位表视图的顶部。

+0

它可能会帮助你阅读我写的关于从iOS 6过渡到iOS 7的文章:http://radar.oreilly.com/2013/09/making-the-leap-to-ios-7.html – matt

+0

好的,'contentInset'将表格向下移动20px,这很好,但是,滚动,表格仍然覆盖顶部栏。 –

+0

我在回答中说过。我告诉过你如果你不喜欢这个,该怎么办。 – matt

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