UITableview:部分标题不会自动调整全屏点击的位置
Posted
技术标签:
【中文标题】UITableview:部分标题不会自动调整全屏点击的位置【英文标题】:UITableview: Section header does not automatically adjusts the position on fullscreen tap 【发布时间】:2018-02-23 06:41:17 【问题描述】:仅在使用 Xcode9 和 ios 11 设备编译时发生。
部分标题不会自动粘在顶部,从而在视图中留出空间,通过该空间可以看到内容。 (包括截图) 点击全屏时发生。 但有时标题会在点击操作时粘在顶部 在向上/向下滚动时,标题会粘在顶部。 (包括 GIF)
Screenshot
GIF
如果我错了,请纠正我,部分标题的浮动性质是由 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
尝试按照here 的建议将estimatedSectionHeaderHeight 设置为0(禁用它)。但它没有用。
我们尝试按照here 的建议在我们的 hideNavBar 函数中重新加载 tableView 数据以解决类似问题。但这会将我们滚动到其他内容。
按照other answer 在我们的 hideNavBar 函数中的建议尝试了以下操作,并再次面临滚动到一些遥远内容的相同问题。
tableView.reloadData()
tableView.layoutIfNeeded()
tableView.beginUpdates()
tableView.endUpdates()
【问题讨论】:
你是否也在向下滚动事件时隐藏导航栏?有一个名为AMScrollingNavbar
的 pod,我将其用于类似的功能
【参考方案1】:
这种变化可能是由于 iPhone X 的安全区域限制发生了变化。因此,我建议不要重新加载整个数据,而是为框架添加一个参考。 即使在 iPhone X 中也能完美地为我工作的解决方法。 在相应的函数中添加以下行。
函数 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)
【讨论】:
以上是关于UITableview:部分标题不会自动调整全屏点击的位置的主要内容,如果未能解决你的问题,请参考以下文章