歡迎大家關注我的公眾號,我會定期分享一些我在專案中遇到問題的解決辦法和一些iOS實用的技巧,現階段主要是整理出一些基礎的知識記錄下來
文章也會同步更新到我的部落格:
ppsheep.com
一個簡單的小功能,忘記在哪個APP上看到過,就做來玩一玩 實現起來還是很簡單的
先看一下效果
分析一下我們需要實現的:
- 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;//將當前位移變成快取位移
}複製程式碼
這樣一個 特別簡單的小功能 就實現了
原始碼放在了: