关于 swift:UITableview 在视图顶部添加空白

UITableview adding white space at top of view

我遇到了一个奇怪的问题,表格视图在顶部添加了一个空的"空白"。我将表视图约束绑定到上面的分段控制字段中的 5 个。

我是 Swift 新手,不知道如何进一步调试这些类型的 UI 问题。我已经检查了约束,我认为这不是问题。故事板没有显示这个额外的空白......它来自哪里?

编辑:它似乎只在 iOS10 上创建空白。在 iOS11 上看起来不错。

Application

编辑:xCode 屏幕

xCode


编辑:我看到其他人拿走了我的代码并已经被选中,但为了在这里提供完整的答案。

此行为是由 ios 平台的自动插入引起的。这里有两个选项:

  • 如果您将表格视图捕捉到导航栏的底部边缘,请务必执行以下代码。它将在 iOS 11 和更早的 iOS 版本上禁用自动插入。
  • 否则,您可以将 tableview 捕捉到视图的边缘并省略代码,因为代码的目的是补偿导航栏/标签栏的大小,并且由于您将 tableview 捕捉到它们后面/下方,因此您需要进行补偿。
  • 适用于 iOS 11 和更早平台的 #1 场景的代码。

    目标-c:

    1
    2
    3
    4
    5
    if (@available(iOS 11, *)) {
        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    } else {
       self.automaticallyAdjustsScrollViewInsets = NO
    }

    斯威夫特:

    1
    2
    3
    4
    5
    if #available(iOS 11.0, *) {
        tableView.contentInsetAdjustmentBehavior = .never
    } else {
        automaticallyAdjustsScrollViewInsets = false
    }


    表格视图上的自动内容插入似乎已激活,您可以通过将此代码添加到视图控制器来停止此行为。

    1
    2
    3
    4
    5
      if #available(iOS 11, *) {
         self.tableView.contentInsetAdjustmentBehavior = .never;
      }else{
         self.automaticallyAdjustsScrollViewInsets = false
      }


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