其实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那种效果,这确定是腾讯公司本身自定制的。网上面应该有不少相似的下拉刷新效果开源库。网络