【问题标题】:Non-floating UITableView footer非浮动 UITableView 页脚
【发布时间】:2018-02-20 19:18:47
【问题描述】:

我有一个UITableView 有一堆自定义单元格(每个单元格都有一个自定义高度和动态高度)。

我想向 tableview 添加一个页脚视图,它始终位于 tableView contentSize 的底部。

如果 contentSize 大于屏幕尺寸,那么在 tableView 的底部(向下滚动,就像一个常规的最后一个单元格)。

如果 contentSize 小于屏幕尺寸,那么页脚仍将位于屏幕底部,并且从最后一个单元格到页脚之间会有间隙。

我尝试添加这样的页脚:

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let myFooterView = Bundle.main.loadNibNamed("MyFooterView", owner: self, options: nil)?.first as! MyFooterView
    myFooterView.delegate = self
    myFooterView.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.size.width, height: 100)
    return myFooterView
}

但当我滚动时,页脚浮动在底部。这不是我想要达到的目标。

知道如何实现我想要的非浮动页脚吗?

谢谢! :)

【问题讨论】:

  • 将您的页脚添加为附加UITableViewCell
  • @ReinierMelian 我已经考虑过了。但就像我说的:“如果 contentSize 小于屏幕尺寸,那么页脚仍将位于屏幕底部,并且从最后一个单元格到页脚会有间隙。”。它不适用于额外的单元格

标签: ios iphone swift uitableview cocoa-touch


【解决方案1】:

将视图作为子视图添加到表格视图并调整scrollView:didScroll: 中的位置。为了能够做到这一点,请将UIScrollViewDelegate 的一致性添加到您的视图控制器中。我认为UITabelViewController 自动成为表格视图的代表(这也是UIScrollView)。

棘手的部分是根据内容大小、内容偏移量、视图大小和页脚大小来计算位置。

【讨论】:

  • 嗨。感谢您的回答。你能再解释一下吗?如何在委托函数中将其调整为什么值?
  • 我知道如何添加委托方法。但是我应该将页脚子视图的 y 位置设置为什么值?
  • 您必须根据表格视图的大小、页脚的大小、内容大小和内容偏移量来计算位置。如果您难以理解这一点,请给自己一张纸并使用所有这些不同的值绘制屏幕。你可以这样做!
  • 但如果视图小于屏幕,我该如何添加间隙?以及如何将 contentSize 更新?如果屏幕更大,页脚将高于其他单元格...
  • 如果内容大小小于视图大小,请调整计算,使视图位于屏幕底部。并查看contentInset 做了什么。说真的,你应该把它画在一张纸上。实验,实验,实验。
猜你喜欢
  • 2011-08-10
  • 1970-01-01
  • 2010-09-30
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 2017-04-20
  • 1970-01-01
相关资源
最近更新 更多