先来看下效果

三个点:

  • UITableView 向上滑动, 底部按钮消失
  • UITableView 向下滑动, 底部按钮出现
  • UITablView 滑动到底部, 底部按钮出现

我们只需要判断 UITableView 是往上滑动, 还是往下滑动, 以及判断 UITableView 是否滑动到底部即可

代码实现

  1. 创建一个底部按钮:
self.bottomButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.bottomButton.frame = CGRectMake(SCREEN.width / 2 - 25, SCREEN.height - 50, 50, 50);
[self.bottomButton setBackgroundImage:[UIImage imageNamed:@"bottom"] forState:UIControlStateNormal];
[self.view addSubview:self.bottomButton];

既然是控制按钮的出现和消失, 首先要创建一个底部按钮, SCREEN是个宏定义:

#define SCREEN [UIScreen mainScreen].bounds.size
  1. 判断UITablView上下滑动

我们都知道, UITableView 是继承 UIScrollView 的. 所以 UIScrollView 的代理方法在 UITableView 是可以使用的. 要判断 UITableView 上下滑动, 我们需要实现 UIScrollView 的 scrollViewDidScroll: 代理方法:

if (scrollView.contentOffset.y > self.offsetY && scrollView.contentOffset.y > 0) //如果当前位移大于缓存位移,说明scrollView向上滑动
{  

}else if (scrollView.contentOffset.y < self.offsetY)
{

}
self.offsetY = scrollView.contentOffset.y; //将当前位移变成缓存位移

  1. 判断 UITableView 滑动到底部
//判断滑动到底部
if (scrollView.contentOffset.y == scrollView.contentSize.height - self.tableView.frame.size.height)
{

}
  1. 按钮消失和出现
// 按钮消失
[UIView transitionWithView:self.bottomButton duration:0.5 options:UIViewAnimationOptionTransitionNone animations:^{
    self.bottomButton.frame = CGRectMake(SCREEN.width / 2 - 25, SCREEN.height, 50, 50);
} completion:NULL];

// 按钮出现
[UIView transitionWithView:self.bottomButton duration:0.5 options:UIViewAnimationOptionTransitionNone animations:^{
    self.bottomButton.frame = CGRectMake(SCREEN.width / 2 - 25, SCREEN.height - 50, 50, 50);
} completion:NULL];

按钮消失其实就是移除屏幕, 这里我加了一个旋转的过度动画, 需要什么动画效果都可以选择. 按钮出现就是把按钮的 frame 设置到初始化时候的 frame 即可

Demo 地址