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)
仅在使用 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.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)