其實UIRefreshControl的效果仍是蠻不錯的,因此特意學習了下,在此與你們分享。python
UIRefreshControl使用很是簡單,可是必須是在UITableViewController子類使用,而不能在UIViewController子類中使用。例如CustomViewController繼承自UIViewController,那麼就不能使用UIRefreshControl。ios
UIRefreshControl使用很簡單,以下代碼,RootTableViewController繼承自UITableViewController,git
//RootTaleViewController.h file @interface RootTableViewController:UITableViewController { } @end //RootTableViewController.m file @interface RootTableViewController() @end @implementation RootTableViewController //省略不相干代碼 - (void)viewDidLoad { [super viewDidLoad]; //初始化UIRefreshControl UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; [refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged]; [self setRefreshControl:refreshControl]; } /* 解釋一下下面的代碼: 當用戶向下下拉刷新的時候,refresh觸發,這時候請求url連接中的內容。這裏使用AFNetworking來解析,代碼塊中的內容就是解析成功以後,設置數據源self.tweets中的內容,而後刷新UITableView界面,而後向UIRefreshControl對象發送endRefreshing消息,中止UIRefreshControl的動畫效果。若是失敗的話,也要中止UIRefreshControl的動畫效果。 */ - (void)refresh:(id)sender { NSURL *url = [NSURL URLWithString:@"http://search.twitter.com/search.json?q=ios%20development&rpp=100&include_entities=true&result_type=mixed/"]; // Initialize URL Request NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:url]; // JSON Request Operation AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:urlRequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSArray *results = [(NSDictionary *)JSON objectForKey:@"results"]; if ([results count]) { self.tweets = results; // Reload Table View [self.tableView reloadData]; // End Refreshing [(UIRefreshControl *)sender endRefreshing]; } } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { // End Refreshing [(UIRefreshControl *)sender endRefreshing]; }]; // Start Operation [operation start]; } @end
代碼我放在了Github,上面的-refresh網絡請求的內容我沒有放在代碼中,由於使用了tweet的數據,因此請求數據無效。這段代碼只是向你們傳遞一些開發過程當中的思想。github
另外在iOS6和iOS7上面,效果是不一樣的,在iOS6效果以下圖,
json
在iOS7運行效果以下圖所示,微信
我在使用微信的時候,發如今iOS7系統上面,它的效果是iOS6那種效果,這確定是騰訊公司本身自定製的。網上面應該有不少相似的下拉刷新效果開源庫。網絡