iOS UITableView上下滑動控制底部按鈕出現

ppsheep發表於2016-11-01

歡迎大家關注我的公眾號,我會定期分享一些我在專案中遇到問題的解決辦法和一些iOS實用的技巧,現階段主要是整理出一些基礎的知識記錄下來

iOS UITableView上下滑動控制底部按鈕出現

文章也會同步更新到我的部落格:
ppsheep.com

一個簡單的小功能,忘記在哪個APP上看到過,就做來玩一玩 實現起來還是很簡單的

先看一下效果

iOS UITableView上下滑動控制底部按鈕出現
1

分析一下我們需要實現的:

  • UITableView 向上滑動時隱藏底部的按鈕
  • UITableView 向下滑動時,底部按鈕出現
  • UITableView 到達底部時,底部按鈕也出現

建立工程啥的我都不講了吧

在viewDidload中加上view

//加上這句  UIScrollView的Content就不會自動偏移64(導航欄和狀態列的高度)
    self.automaticallyAdjustsScrollViewInsets = NO;

    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 64, SCREEN.width, SCREEN.height-64) style:UITableViewStylePlain];
    tableView.delegate = self;
    tableView.dataSource = self;
    [self.view addSubview:tableView];
    self.tableView = tableView;
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(self.view.frame.size.width / 2 - 25, self.view.frame.size.height - 50, 50, 50);
    [btn setBackgroundImage:[UIImage imageNamed:@"comments"] forState:UIControlStateNormal];
    self.btn = btn;
    [self.view addSubview:self.btn];複製程式碼

處理UIScrollView的滑動,一般都是在scrollViewDidScroll:方法中,這次也不例外

我們在這裡監聽當前scrollview的滑動距離 滑動方向等

#pragma mark - UITableView delegate
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    if (scrollView.contentOffset.y > self.offsetY && scrollView.contentOffset.y > 0) {//向上滑動
        //按鈕消失
        [UIView transitionWithView:self.btn duration:0.1 options:UIViewAnimationOptionTransitionNone animations:^{
            self.btn.frame = CGRectMake(SCREEN.width / 2 - 25, SCREEN.height, 50, 50);
        } completion:NULL];
    }else if (scrollView.contentOffset.y < self.offsetY ){//向下滑動
        //按鈕出現
        [UIView transitionWithView:self.btn duration:0.1 options:UIViewAnimationOptionTransitionNone animations:^{
            self.btn.frame = CGRectMake(SCREEN.width / 2 - 25, SCREEN.height - 50, 50, 50);
        } completion:NULL];
    }
    self.offsetY = scrollView.contentOffset.y;//將當前位移變成快取位移
}複製程式碼

這樣一個 特別簡單的小功能 就實現了

原始碼放在了:

github.com/yangqian111…

相關文章