iOS:顶级UITableView行流入运营商

时间:2016-04-27 18:35:16

标签: ios swift uitableview

我们桌子的对齐工作正常,除了顶部单元的顶部对齐,它们会流入"载体区域"。要解决这个问题需要什么?

enter image description here

我们正在使用自我调整大小的细胞:

public Customer  findPersonByName(final String name) {
    return mockCustomerDatabase.stream().filter(p -> p.getName().equals(name)).findAny();
}

当前限制概述:

enter image description here

3 个答案:

答案 0 :(得分:3)

基本上Apple不希望你做你正在做的事情。查看Apple的应用程序(设置,邮件等)。您将从不看到顶部没有导航栏的全屏桌面视图。所以模仿那个。而不是打击框架,将视图控制器包装在UINavigationController中,让导航栏自动向下推动表格视图的顶部。

答案 1 :(得分:2)

通常当您使用导航控制器来包装视图控制器时,将为您设置TopLayoutGuide(和BottomLayoutGuide,并使用您可以在情节提要文件中设置的“调整滚动视图插入”,它将自动设置最外层滚动视图的contentInsets以供您使用。但由于您没有使用导航控制器将视图控制器包装在此处,因此您有三个选项。

<强> 1。手动将表视图的框架设置为偏移状态栏的高度。

我们只是将表格视图向下移动20个点并缩短20个点。理想的地方是代码中的某个地方,我们知道每次更改superview的边界时都会调用它。其中一个是viewDidLayoutSubviews

尝试将此代码放入视图控制器的代码中。

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.view.superview!.backgroundColor = UIColor.whiteColor()
    let insets = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)
    self.view.frame = UIEdgeInsetsInsetRect(self.view.superview!.bounds, insets)
}

请注意,我必须将superview的背景颜色设置为白色,因为superview(可能是UIWindow)可能没有背景颜色,并且它会使顶部显示为黑色。通常在生产代码中,您可能需要在设置框架之前检查superview的绑定是否真的发生了变化。

<强> 2。使用UIViewController并添加UITableView作为子视图。

这样,Interface Builder将允许您设置所需的所有约束。

第3。只需使用UINavigationController

打包即可

它会像大多数应用程序顶部都有导航栏一样。这可能不是你想要的。但我很少看到没有导航控制器包装的表视图。

enter image description here

答案 2 :(得分:0)

选择您的表格视图。在屏幕的右下角(将对象拖动到屏幕的左侧),您将看到4个小按钮。如果你点击右边的第二个(一个有两条线到它的边的方格),你会看到一个小的子菜单,上面写着添加新的约束。在它下面你有一个有4个值的正方形(右上角 - 左下角)。确保顶部为0,然后单击半透明的红色虚线。它应该变成坚实的红色。现在只需点击&#34;添加约束&#34;底部的按钮就完成了。