当我们需要显示状态消息时,我们在UITableViewController view
上放置一个临时标签。视图直接位于UINavigationBar下方。这种方法效果很好,但statusView
会随表格滚动,并会随着表格向上滚动而消失。即使表格滚动,如何修复statusView的位置?
更新:
由another question启发的几乎可以使用TableViewDelegate方法来修复statusView位置:
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
var newFrame = statusView.frame
newFrame.origin.x = 0
newFrame.origin.y = self.tableView.contentOffset.y + self.navigationController!.navigationBar.bounds.height
statusView.frame = newFrame
}
它将statusView
栏放在固定位置,但它部分位于导航栏下方。好像我们只需要调整newFrame.origin.y
逻辑....
更新2 :
每https://stackoverflow.com/a/40202931/47281只需要包含状态栏:
newFrame.origin.y = self.tableView.contentOffset.y + self.navigationController!.navigationBar.frame.size.height + UIApplication.shared.statusBarFrame.height
答案 0 :(得分:0)
您可以尝试使用ViewController子类并向其添加UITableView,而不是继承UITableViewController。
答案 1 :(得分:0)
上述解决方案的每个更新都受到another question的启发 - 我们使用TableViewDelegate scrollViewDidScroll来修复位置:
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
var newFrame = statusView.frame
newFrame.origin.x = 0
newFrame.origin.y = self.tableView.contentOffset.y + self.navigationController!.navigationBar.bounds.height
statusView.frame = newFrame
}