【问题标题】:Header views height for grouped UITableView on iOS7iOS7上分组UITableView的标题视图高度
【发布时间】:2013-08-05 08:07:53
【问题描述】:

我正在构建我的设置屏幕并使用分组表格视图。 尝试设置标题时,我看到标题视图上方的间距。 我仔细检查了一下,我确实在-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 中传递了正确的视图高度。

以下是此行为的屏幕截图:

您可以看到我的视图,其中包含标题(振动,静音模式),背景颜色较暗,上方空间较亮。

【问题讨论】:

  • 那么你的问题是什么?这仍然是保密协议,您应该在开发者论坛中询问。
  • 如何去掉我的标题视图上方的空间。

标签: header uitableview ios7


【解决方案1】:

很确定这只是一个简单的 hack。但是一个简单的方法是编写这个函数:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
      return 48.0f; // header height
}

自定义其高度。

我不知道还有其他方法可以做到这一点。

【讨论】:

  • 感谢您的回答。已经实现了这个方法。我返回了正确的标题视图高度,但仍然得到了额外的~20 px 间距。
【解决方案2】:

试试这个:

- (void)viewWillAppear:(BOOL)animated{
    CGRect frame = self.tableView.tableHeaderView.frame;
    frame.size.height = 1;
    UIView *headerView = [[UIView alloc] initWithFrame:frame];
    [self.tableView setTableHeaderView:headerView];
}

【讨论】:

  • 感谢您的回复。我认为这只会影响表格的顶部标题,我正在谈论部分的标题。
  • 这实际上是一个合法的解决方案 - 如果存在 tableHeaderView,系统不会在第一节标题中添加额外的空间。就我个人而言,我更喜欢这个技巧而不是搞乱页脚高度。
【解决方案3】:

Apple 似乎做出了一个有意识的设计决定,让分组表视图在顶部有额外的空间。尝试调整UITableView 的 contentInset。见my answer here

【讨论】:

    【解决方案4】:

    经过大量搜索,我终于找到了解决此问题的方法。 tableview 的委托需要实现 heightForFooterInSection 并返回一个非常小的数字。返回 0 默认为导致额外空格的相同间距。

    -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
        return CGFLOAT_MIN;
    }
    

    【讨论】:

    • 是的,这种行为非常不连贯。所有值都返回正确的高度,但 0 返回默认高度。这没有记录在案,并且行为似乎不连贯。我为此打开了雷达。
    • @viggio24 谢谢!请随时通知我们进展情况。
    • @naudec 谢谢。 CGFLOAT_MIN 可能是一个更好的返回值。我已经更新了我的答案。
    • 谢谢,它对我有用。返回 0 不会停止呈现页脚的 UITableView 的默认行为。
    • 对于任何尝试使用 Swift 的人,CGFLOAT_MIN 不可用,编译器会很好地告诉您使用 CGFloat.min
    【解决方案5】:

    这与 Casey 的响应几乎相同,但是它更简洁一些,因为它不需要实现委托方法。在设置表格视图时,只需将属性 sectionFooterHeight 设置为 0。它用更少的代码完成同样的事情(并且没有 DBL_MIN 奇怪)。

    tableView.sectionFooterHeight = 0.0;

    【讨论】:

      【解决方案6】:

      Swift 2.2 版本:

      func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
          return CGFloat.min
      }
      

      【讨论】:

        猜你喜欢
        • 2010-11-17
        • 2013-07-16
        • 2013-01-28
        • 2016-07-05
        • 2013-09-07
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        • 2014-03-29
        相关资源
        最近更新 更多