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:部分标题不会自动调整全屏点击的位置的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu怎么全屏 vmware的全屏点了 但还是很小

在自定义 UIView 中为部分自动调整 UITableView

UITableView 部分标题的自动布局问题

我应该调整图像大小以便在UITableView中显示吗?

切换方向时如何使 UIView 自动调整为全屏

为啥 UITableView 只在输入第一个字符时自动滚动?