【问题标题】:Fix UILabel position below UITableViewController's UINavigationBar修复 UITableViewController 的 UINavigationBar 下方的 UILabel 位置
【发布时间】:2017-03-31 01:38:17
【问题描述】:

当我们需要显示状态消息时,我们会在 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 

【问题讨论】:

  • 特定表格单元格是否需要此状态视图?如果是这样,为什么不能将其添加到单元格的视图中呢?你能分享一个屏幕截图和更多代码吗?

标签: swift uitableview uilabel


【解决方案1】:

您可以尝试使用 ViewController 子类并向其添加 UITableView 而不是子类化 UITableViewController。

【讨论】:

    【解决方案2】:

    上述解决方案的每次更新都受到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
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-21
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      相关资源
      最近更新 更多