从iOS7开始,在我的UITableView顶部有额外的空间它有一个UITableViewStyleGrouped样式。
这里有一个例子:
tableview从第一个箭头开始,有35个像素的无法解释的填充,然后绿色的头是一个由viewForHeaderInSection返回的UIView(其中section为0)。
有人能解释一下这个35像素的数量是从哪里来的吗?我如何才能在不切换到UITableViewStylePlain的情况下摆脱它?
更新(回答):
在iOS 11及更高版本中:
tableView.contentInsetAdjustmentBehavior = .never
我的回答将是更一般的答案,但也可以应用在这个问题上。
如果根视图(ViewController的)或根视图的第一个子视图(子视图)是UIScrollView(或UIScrollView本身)的子类,并且如果
self.navigationController.navigationBar.translucent = YES;
框架将自动设置预先计算的contentInset。
为了避免这种情况,你可以这样做
self.automaticallyAdjustsScrollViewInsets = NO;
但在我的情况下,我不能这样做,因为我正在实现SDK,其中有UIView组件,可以由其他开发人员使用。那个UIView组件包含UIWebView(它有UIScrollView作为第一个子视图)。如果该组件被添加为UIViewController的视图层次结构中的第一个子组件,自动嵌入将被系统应用。
在添加UIWebView之前,我已经通过添加frame(0,0,0,0)来修复这个问题。
在这种情况下,系统没有找到UIScrollView的子类作为第一个子视图,并没有应用insets
我检查了所有的答案。没有一个对我有效。我所要做的就是
self.myTableView.rowHeight = UITableViewAutomaticDimension
self.myTableView.estimatedRowHeight = 44.0
此外,这个问题并没有发生在tableView的顶部。它发生在tableView每个部分的顶部。
这个问题只发生在iOS9上。我们的应用在iOS10和iOS 11上运行良好。
我强烈推荐你看看这个很棒的问题和它的顶级答案:
在UITableView中使用自动布局进行动态单元格布局和可变行高