从 UITableView 中删除顶部填充

Posted

技术标签:

【中文标题】从 UITableView 中删除顶部填充【英文标题】:Remove top padding from UITableView 【发布时间】:2018-02-05 22:00:32 【问题描述】:

我有一个 UITableView 作为另一个 UITableView(嵌套 UITableViews)的单元格。 有一个我无法解释的顶部填充,仅当我使 CustomTableCell 具有 UITableView 时才会出现顶部填充。

class CustomTableCell: UITableViewCell, UITableViewDelegate, UITableViewDataSource 

  private let cellId = "cellId"

  lazy var tableView: UITableView = 

    let tv = UITableView(frame: .zero, style: .grouped)
    tv.translatesAutoresizingMaskIntoConstraints = false
    tv.backgroundColor = .green
    tv.delegate = self
    tv.dataSource = self
    tv.alwaysBounceVertical = false
    tv.isScrollEnabled = false

    tv.separatorColor = .red;
    tv.separatorStyle = .none;

    tv.register(InnerTableCell.self, forCellReuseIdentifier: self.cellId)
    return tv
  ()

  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return 10
  

  func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
    return 50
  

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! InnerTableCell
    return cell
  

  func setupAutoLayout() 

    tableView.leftAnchor.constraint(equalTo: contentView.leftAnchor).isActive = true
    tableView.rightAnchor.constraint(equalTo: contentView.rightAnchor).isActive = true
    tableView.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
    tableView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
  

  override init(style: UITableViewCellStyle, reuseIdentifier: String?) 
    super.init(style: style, reuseIdentifier: reuseIdentifier)

    contentView.backgroundColor = .white
    contentView.addSubview(tableView)
    setupAutoLayout()
  

  required init?(coder aDecoder: NSCoder) 
    fatalError("init(coder:) has not been implemented")
  

这里是整个代码的链接:https://ideone.com/QAxkPR

这是它的外观

【问题讨论】:

父表的高度是静态的还是动态的? 它是静态的,基于内部表格视图的高度。这是整个代码的链接:ideone.com/QAxkPR 你能把 .grouped 改成 .plain 谢谢,将其更改为 .plain 解决了问题,但您知道为什么会这样吗? 组更改总是有一个你没有实现的标题,所以它的空间是空的 【参考方案1】:

将样式更改为.plain 而不是.grouped

let tv = UITableView(frame: .zero, style: .plain)

【讨论】:

以上是关于从 UITableView 中删除顶部填充的主要内容,如果未能解决你的问题,请参考以下文章

为什么我的UITableView顶部有额外的填充,iOS7中的样式为UITableViewStyleGrouped

从 UIImageView 中删除顶部/底部填充

分组 UITableView 35 点/像素顶部插入/填充

从绘制在图像上的文本中删除顶部和底部填充

如何从 Mac OS 中的 SwiftUI 列表中删除底部/顶部项目填充

UITableView 拉伸问题