分组UITableView 35点/像素顶部插入/填充

时间:2014-05-14 19:56:11

标签: ios objective-c uitableview

请注意,我将在这个问题中将点称为像素。

我有一个分组UITableView,有3个部分,每个部分都有一个40像素高的标题视图。表格视图中的第一个标题似乎被系统给出了35像素的y位置。

我已经尝试过使用automaticallyAdjustsScrollViewInsets和其他一些iOS 7自动作品,但无济于事。

为什么我的UITableView内容被35像素插入?

编辑:我已经看到了this answer以及其他许多线索。我有有效的标题和标题高度。此外,将默认值设置为FLT_MIN,0.01f,1.0f或100.0f无法解决问题。

这是我的标题实现:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    UIView *header = (self.headerViews.count > section ? self.headerViews[section] : nil);
    return (header.viewHeight ? : FLT_MIN);
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *header = (self.headerViews.count > section ? self.headerViews[section] : nil);
    return (header.viewHeight ? header : nil);
}

我也在设置:

- (BOOL)automaticallyAdjustsScrollViewInsets{return NO;}

[self setSectionHeaderHeight:FLT_MIN];

3 个答案:

答案 0 :(得分:6)

似乎这样:

[self setTableHeaderView:[[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, width, FLT_MIN)]];

在初始阶段,selfUITableView,将排除前35位。

答案 1 :(得分:2)

有多种方法可以解决您遇到的相同问题,因此有多种解决方案。我将尝试列出我所知道的相应解决方案。其中大多数是从this question复制的。

UIViewController内的UITableView

这是一个常见的问题,因为他们认为问题与他们的UITableView有关,而且大部分时间实际上都是父UIViewController

如果VC上的NavigationController 嵌入。如上所述here,您将获得35分 y偏移

<强>解决方案

  • 在Xcode版本中&gt; 5在VC上取消扩展边线&#34;在属性检查器下的顶部栏下删除顶部UITableView内容插入。

  • 约束:您的VC有一个主视图,其中包含了所有其他子视图,包括您的{{ 1}}。您需要确保UITableView中的所有约束 明确设置并且满意/非模糊

  • 设置UITableView

  • 设置self.navigationController.navigationBar.translucent = YES;。也可以通过取消选中视图控制器布局的调整滚动视图插入复选框,在故事板上设置此视图。

  • 设置self.automaticallyAdjustsScrollViewInsets = NO;


General UITableView / UITableViewController

  • 设置self.edgesForExtendedLayout = UIRectEdgeNone;

  • 设置tableView.separatorInset = UIEdgeInsetsZero;注意 -35 。负数抵消了视图。

  • 声明此方法(也可用于FooterSection):

tableView.contentInset = UIEdgeInsetsMake(-35, 0, 0, 0);

答案 2 :(得分:0)

是的,当我设置tableview.tableFooterView并自定义设置节标题高度时,出现此问题,那么第一节高度超过35点。

然后我添加

tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: CGFloat.leastNormalMagnitude))

为我工作。