【问题标题】:Empty white space above UITableView inside a UIViewUIView 内 UITableView 上方的空白区域
【发布时间】:2015-03-05 19:28:34
【问题描述】:

我试图在我的 ViewController 视图中放置一个 TableView,但在导航栏底部和表格顶部之间留下了 44 的高度间隙。然后我想在该间隙内放置一个 UITextField 作为固定标题。出于某种原因,TableView 在“原型单元”的开头上方有一个空白区域。它只是空白。这是故事板中的样子。

查看应用显示时,如下所示:

滚动表格时,它一直到正确的位置:

【问题讨论】:

标签: ios uitableview interface-builder


【解决方案1】:

尝试查看 Participants ViewController 的“属性检查器”(在右侧菜单中)。 检查选项'Extend Edges'并取消选中'Under Top Bars',然后重新定位您的tableview。

另一种可能的解决方案是取消选中选项“调整滚动视图插图”。 原因是当 viewController 扩展它的边缘时,比如说在 top bar 下,tableView 的 scrollView 会自动调整它的 inset top,这样 tableView 的内容就会正好在 top bar 下开始。但在您的情况下,这不是必需的,因为您的 tableView 本身从栏下开始。

关注 ViewController 并进入 Attribute Inspector 选项卡:

【讨论】:

  • 太棒了!这很好用,只是在横向模式下“输入名称”文本字段不可见。也许它隐藏在表格下方是因为导航栏更薄?
  • 听起来只是一个简单的约束案例。尝试为 textField 设置约束 - 'Top Space to Top Layout Guide',这应该会导致 textField 通过您设置的常量位于顶部布局指南之下,在这种情况下,topLayoutGuide 正是导航栏的底部。
  • 刚刚用更好的解决方案更新了我的答案。顺便说一句,我只想强调它与标题视图无关,正如另一个答案所建议的那样......至少不是我所看到的......
  • 您的答案的第二段效果很好。谢谢!
  • 谢谢您,先生!这是我的第一个“V”:)
【解决方案2】:

试试这个:

self.tableView.contentInset = UIEdgeInsetsMake(-65, 0, 0, 0)

【讨论】:

  • 奇怪的是,除了您的解决方案之外,其他解决方案都没有帮助。
  • 这是唯一对我有用的答案。谢谢@Natividad!
【解决方案3】:

只需在你的 ViewDidLoad 方法中添加这个

self.automaticallyAdjustsScrollViewInsets = NO;

【讨论】:

    【解决方案4】:

    将您的表格视图样式从分组更改为普通

    【讨论】:

    • 谢谢!这对我有用,但我的是将普通更改为分组!
    【解决方案5】:

    您不需要更改“延伸边缘”的默认设置。

    看起来真正的问题是情节提要中的空白表头视图。它显示在您提供的情节提要的屏幕截图中,位于 Enter Name 视图的正下方和 Prototype Cells 视图的正上方。删除它。

    【讨论】:

    • 也许我疯了,但你如何删除空白表头视图?我无法点击该空白区域中的任何内容。
    • 也许是我。如果您在左侧的 Structure 编辑器中展开 Table View,您会看到什么?那个空白处是什么?可以提供截图吗?
    • 滚动表格时空格消失的事实表明空白是表格视图的一部分。我知道的唯一方法是您的表格中是否有标题视图。
    【解决方案6】:

    我的问题是,我像这样将tableHeaderView 设置为新的UIView

    self.tableHeaderView = UIView(frame: .zero)
    

    去掉这一行,问题就解决了。试试这个:

    //self.tableHeaderView = UIView(frame: .zero)
    

    【讨论】:

      【解决方案7】:

      我刚刚找到了解决方案。 就我而言,我使用的是 TabBarViewController,A 只需取消选中“调整滚动视图插图”选项。问题消失了。

      https://i.stack.imgur.com/qgQI8.png

      【讨论】:

        【解决方案8】:

        对于 Objective-C 人员,请将其添加到您的 ViewDidLoad 方法中。

        [self.tableView setContentInset:UIEdgeInsetsMake(-20, 0, 0, 0)];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-11
          • 1970-01-01
          • 1970-01-01
          • 2021-02-10
          • 1970-01-01
          • 2019-07-04
          • 1970-01-01
          • 2023-03-15
          相关资源
          最近更新 更多