2017-01-02 23 views
0

我想有一个UITableViewCell有部分页脚和表尾之间的混合行为:滚动/静态的UITableView页脚

如果没有填写该表(这意味着没有足够的细胞,以填补整个屏幕) ,细胞应该停留在桌子的底部,固定在屏幕边缘,在它和上面的空间之间留下空白区域。 (表现得像一个表格页脚)

如果表格被填满,单元格应该开始滚动并始终保留在表格的底部。 (行为像一个页脚)

我想避免尽可能怪异的技巧来实现这一点,有没有一个优雅的解决方案,让我做到这一点?

回答

1

使你的页脚成为tableView顶部的一个单独的视图,并在tableView的底部添加一个约束条件,然后插入这个约束条件。重写scrollViewDidScroll并通过使用tableView.visible单元格并在其框架上调用CGRect.maxy获取最后一个可见单元格的底部y坐标(如果没有最后一个单元格,则您的约束常量为tableView.frame.size.height - footerView.frames。 size.height)。取出tableView.frame.maxY和最后一个可见单元格的最大值之差。如果单元格已经超过了tableView.frame.maxY - footerView.frames.size.height,那么您将约束常量设置为0,否则将其设置为差值。

这会将您的页脚视图固定到最后一个可见单元格,除非这会强制页脚超过表格底部,在这种情况下,您只需将它钉在表格底部。如果没有最后一个单元格,则将页脚固定到表格的顶部。