Swift:NavigationController中的TableViewController - 改变第一个静态单元格和顶部之间的距离

时间:2017-12-29 12:04:59

标签: ios swift uitableview

我刚刚创建了一个没有任何编码的新xcode项目。我刚刚在故事板上工作过。我有一个导航控制器。我的RootViewController有一个带有静态单元格的TableView,分为3个部分(Grouped)。我删除的部分标题。我的下一步是改变各部分之间的距离。顶部我说4和底部4也是。现在看起来像这样:

Current Storyboard

现在我的问题:第一部分和顶部之间的大小非常大(我认为32因为这是部分之间的自动距离)。只有我找到的东西是大小检查员 - 内容插入。这被设置为自动。没有选择我可以在自己身上放一些值。如果我从不选择那个,则该部分显示在Root View Controller标题下。我的尺码检查员看起来像这样:

Size inspector

有谁能告诉我如何缩小viewController顶部和第一部分之间的大小?我希望第一部分和根视图控制器的标题之间的大小为16。

有没有办法对整个项目进行更改,以便即将推出的导航控制器的第一部分和标题之间的桌面视图大小为16?

我尝试了什么:我发现了这个问题Why is there extra padding at the top of my UITableView with style UITableViewStyleGrouped in iOS7这里有人要求提供tableViews。我在那里做的解决方案对我没有用处:

  • 关闭调整滚动视图插图。我试过这个根和导航控制器。我也尝试用代码解决问题。
  • 在viewDidLoad中将edgesForExtendedLayout设置为none - 没有任何更改。
  • 将第一部分的标题设置为1。
  • self.navigationController?.navigationBar.isTranslucent = true什么都没改变

半正确:一种解决方案是在代码中手动更改contenInset。我不喜欢这个,因为我必须在我的代码中输入16点。我不知道32的标题来自。所以我不知道16分将永远存在。所以我想要一个更安全的未来解决方案。这是一个难以解决的问题:

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

2 个答案:

答案 0 :(得分:1)

顶部空间来自分组样式tableView标头。您可以在表格顶部添加自己的表格标题视图,将其颜色设置为"组表格查看背景颜色",并将其高度设置为您想要的高度(16)。

enter image description here

答案 1 :(得分:1)

iOS11纯代码解决方案

任何想要在纯代码中执行此操作并删除35px空白空间的人都需要向tableHeaderView添加tableView - 它显示为nil只是将其设置为默认大小调整35px

tableView.tableHeaderView = tableHeaderView

var tableHeaderView:UIView = {
    let view = UIView()
    view.frame = CGRect(x: 0, y: 0, width: tableView.bounds.width, height: CGFloat.leastNormalMagnitude)
    return view
}()

注意设备宽度为您的边界/视图宽度,高度为 0 - 但CGFloat.leastNormalMagnitude