iOS_UITableView上拉載入,下拉重新整理

來源:互聯網
上載者:User

標籤:

 轉自:http://blog.csdn.net/hmt20130412/article/details/32695305

很多App中,新聞或者展示類都存在下拉重新整理和上拉載入的效果,網上提供了實現這種效果的第三方類(詳情請見MJRefresh和EGOTableViewPullRefresh),用起來很方便,但是閑暇之餘,我們可以思考下,這種效果實現的原理是什麼,我以前說過,只要是動畫都是騙人的,只要不是硬體問題大部分效果都能在系統UI的基礎上做出來.

@下面是關鍵程式碼分析:

 1 // 下拉重新整理的原理 2 - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView 3 { 4     if (scrollView.contentOffset.y < - 100) { 5          6         [UIView animateWithDuration:1.0 animations:^{ 7              8             //  frame發生位移,距離頂部150的距離(可自行設定) 9             self.tableView.contentInset = UIEdgeInsetsMake(150.0f, 0.0f, 0.0f, 0.0f);10         } completion:^(BOOL finished) {11             12             /**13              *  發起網路請求,請求重新整理資料14              */15 16         }];17     }18 }19 20 // 上拉載入的原理21 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate22 {23     24     NSLog(@"%f",scrollView.contentOffset.y);25     NSLog(@"%f",scrollView.frame.size.height);26     NSLog(@"%f",scrollView.contentSize.height);27     /**28      *  關鍵-->29      *  scrollView一開始並不存在位移量,但是會設定contentSize的大小,所以contentSize.height永遠都會比contentOffset.y高一個手機螢幕的30      *  高度;上拉載入的效果就是每次滑動到底部時,再往上拉的時候請求更多,那個時候產生的位移量,就能讓contentOffset.y + 手機螢幕尺寸高大於這31      *  個滾動視圖的contentSize.height32      */33     if (scrollView.contentOffset.y + scrollView.frame.size.height >= scrollView.contentSize.height) {34         35         NSLog(@"%d %s",__LINE__,__FUNCTION__);36         [UIView commitAnimations];37         38         [UIView animateWithDuration:1.0 animations:^{39             //  frame發生的位移量,距離底部往上提高60(可自行設定)40             self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 60, 0);41         } completion:^(BOOL finished) {42             43             /**44              *  發起網路請求,請求載入更多資料45              *  然後在資料請求回來的時候,將contentInset改為(0,0,0,0)46              */47         }];48 49     }50 }

 

iOS_UITableView上拉載入,下拉重新整理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.