自从我将应用程序更新到 iOS 7 新 GUI 后,我遇到了一个无法解决的问题。
我的应用程序包含一个可滚动的 TableView。问题是 TableView 滚动底层顶栏,这意味着表格不考虑顶栏并延伸到顶部,很难看。
我尝试删除“在顶部条下延伸边缘”的检查,但它是相同的。
我该如何解决这个问题?
自从我将应用程序更新到 iOS 7 新 GUI 后,我遇到了一个无法解决的问题。
我的应用程序包含一个可滚动的 TableView。问题是 TableView 滚动底层顶栏,这意味着表格不考虑顶栏并延伸到顶部,很难看。
我尝试删除“在顶部条下延伸边缘”的检查,但它是相同的。
我该如何解决这个问题?
一种解决方案是:设置表格视图的contentInset
顶部scrollIndicatorInsets
插图为 20。表格视图仍将在状态栏下方,但在一直滚动时将完全可见。
如果您不喜欢该解决方案,并且希望在状态栏后面有一个永久空白区域,则必须更改固定/定位表格视图顶部的方式,以允许状态栏。如何执行此操作取决于您是否使用自动布局。如果你是,只需固定到顶部布局指南。如果不是,则必须使用 nib 编辑器中提供的“delta”字段。
但是,如果您使用的是 UITableViewController,则您不负责 table view 的顶部;它是一个全屏视图,它是视图控制器的主视图。实际上,这是一个相当麻烦的情况。我采取了两种解决方案:
将整个东西放入 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
}
}