【问题标题】:How to remove header and footer space from a UITableView?如何从 UITableView 中删除页眉和页脚空间?
【发布时间】:2011-09-16 21:08:54
【问题描述】:

我有一个分组样式的 UITableView,只有一个部分。但是,当用户滚动得太远时,表格视图的上方和下方会显示一些空白区域。如何删除此空白?

【问题讨论】:

    标签: ipad uitableview ios4


    【解决方案1】:

    您可以通过更改表格视图从UIScrollView 继承的contentInset 属性来做到这一点。

    self.tableView.contentInset = UIEdgeInsetsMake(-20, 0, -20, 0);
    

    这将使顶部和底部接触边缘。

    【讨论】:

    • 感谢您的回答,但实际上这不是我所说的反弹。我要尝试删除的是表格视图顶部和显示的第一个单元格之间的大约 10px-20px,页脚也是如此。
    • 谢谢,这是一个更优雅的解决方案。事实证明 30 像素是我需要的数量。
    • 非常感谢。这是我无法解决的常见问题!
    • 如果你有一个表头视图,这会从表头视图的顶部移除空间,阻碍它的一部分。
    • 我猜顶部和底部的实际偏移量可能会根据操作系统和情况而变化......我不得不使用 self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, -35, 0) ;以达到正确的行为。 -rrh
    【解决方案2】:

    其实这个问题回答了我的问题。

    Reducing the space between sections of the UITableView.

    【讨论】:

      【解决方案3】:

      使用UIScrollViewbounces 属性:

      [yourTableView setBounces:NO];

      这将删除您的UITableView 顶部和底部的额外填充。 实际上,它只会禁用 tableview 的滚动视图以滚动到内容的边缘。

      【讨论】:

        【解决方案4】:

        添加此代码:

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

        【讨论】:

          【解决方案5】:

          UIView 可以插入到表格的顶部和底部(拖放)。将它们的属性设置为透明和 1 px 的高度。这是为了去除单元格前面的多余填充。

          【讨论】:

            【解决方案6】:

            您还可以使用此代码删除 uitableview 的第一个单元格之间的空间..

             - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
             {
                return 0.002f;// set this...
             }
            

            【讨论】:

              【解决方案7】:

              取消选中顶部栏下的延伸边缘。

              【讨论】:

                【解决方案8】:

                这个答案来得很晚,但我希望它对某人有所帮助。

                空间存在是因为UITableViewtableHeaderView 属性。当tableHeaderView 属性为nil 时,Apple 默认为一个视图。所以解决这个问题的方法是创建一个高度大于0 的空视图。设置此项会覆盖默认视图,从而删除不需要的空间。

                这可以在 Storyboard 中通过将视图拖动到 tableView 的顶部然后将视图的高度设置为 1 或更大的值来完成。

                或者可以使用以下代码以编程方式完成:

                目标-C:

                CGRect frame = CGRectZero;
                frame.size.height = CGFLOAT_MIN;
                [self.tableView setTableHeaderView:[[UIView alloc] initWithFrame:frame]];
                

                斯威夫特:

                var frame = CGRect.zero
                frame.size.height = .leastNormalMagnitude
                tableView.tableHeaderView = UIView(frame: frame)
                

                评论

                正如其他人所指出的,您可以对页脚使用相同的解决方案。


                来源和致谢

                有关tableHeaderView 属性的更多详细信息,请参阅Documentation

                感谢@liushuaikobe 验证使用最小正正态数是否有效。

                我原来的答案:https://stackoverflow.com/a/22185534/2789144

                【讨论】:

                  【解决方案9】:

                  就我而言,问题在于我应用的约束。我必须更改它们才能在我的情况下显示 2 行,而表格底部接触最后一行。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2012-01-03
                    • 2015-10-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-04-24
                    相关资源
                    最近更新 更多