UITableview:第 header 部分不会自动调整全屏点击时的位置

UITableview: Section header does not automatically adjusts the position on fullscreen tap

仅在使用 Xcode9 和 iOS 11 台设备编译时发生。

第 header 部分不会自动粘在顶部,在视图中留下一个 space,通过它可以看到内容。 (包括截图) 点击全屏时发生。 但有时 header 在点击操作时会粘在顶部
在滚动 up/down 时,header 会粘在顶部。 (包括 GIF)

Screenshot

GIF

如果我错了请纠正我,header 部分的浮动特性由设置为普通的 UITableViewStyle 提供。

tableView = UITableView()
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44
tableView.cellLayoutMarginsFollowReadableWidth = false
tableView = UITableView(frame: self.view.frame, style: UITableViewStyle.plain)
tableView.sectionHeaderHeight = 44
//    tableView.estimatedSectionHeaderHeight = 0
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "content")
tableView.register(UITableViewHeaderFooterView.self, forHeaderFooterViewReuseIdentifier: "hContent")
tableView.dataSource = self
tableView.delegate = self

尝试按照建议将 estimatedSectionHeaderHeight 设置为 0(禁用它)here。但它没有用。

对于类似问题,我们尝试按照建议 在我们的 hideNavBar 函数中重新加载 tableView 数据。但这会使我们滚动到其他一些内容。

在我们的 hideNavBar 函数中按照 的建议尝试了以下操作,但再次面临同样的问题,即我们滚动到一些远处的内容。

tableView.reloadData()
tableView.layoutIfNeeded()
tableView.beginUpdates()
tableView.endUpdates() 

更改可能是由于 iPhone X 安全区域限制的更改。因此,我建议不要重新加载整个数据,而是建议为框架添加一个参考。 一种即使在 iPhone X 中也对我非常有效的解决方法。 在各自的函数中添加以下行。

func hideNavbar() 和 hideTabbar()

tableView.frame = CGRect(x: 0, y: 0.01, width: view.bounds.width, height: view.bounds.height)

func showNavbar() 和 hideTabbar()

tableView.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height)