EGOTableViewPullRefresh动态刷新按钮

来源:互联网 发布:a 寻路算法优化 编辑:程序博客网 时间:2024/05/17 07:17

EGOTableViewPullRefresh 是fork EGOTableViewPullRefresh开源类库进行的改进,添加了上提加载更多效果。同时也可以通过一个按钮的触发刷新事件,但是刷新的时候不能跳到top,为了动态展示,再刷新的时候按钮旋转,然后跳转回到顶部!如下如图


   


关于EGOTableViewPullRefresh可以参照http://blog.csdn.net/duxinfeng2010/article/details/9007311,翻译过的用法,在这个Demo基础上进行修改,点击Demo下载;

1、给工程添加一个导航栏,在application: didFinishLaunchingWithOptions:方法中


[cpp] view plaincopy
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     // Override point for customization after application launch.  
  4. //    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault];  
  5.       
  6.     UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.viewController];  
  7.     self.window.rootViewController = nav;  
  8.     [self.window makeKeyAndVisible];  
  9.     return YES;  
  10. }  



2、在ViewDidLoad方法中,修改背景图片,添加刷新按钮


[cpp] view plaincopy
  1.   
[cpp] view plaincopy
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     self.navigationController.navigationBar.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"navbar.png"]];  
  5.       
  6.     self.pullTableView.pullArrowImage = [UIImage imageNamed:@"blackArrow"];  
  7. //    self.pullTableView.pullBackgroundColor = [UIColor yellowColor];  
  8.     self.pullTableView.pullTextColor = [UIColor blackColor];  
  9.       
  10.     CGRect rect = CGRectMake(0, 0, 44, 44);  
  11.     UIButton *refreshBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  12.     refreshBtn.frame = rect;  
  13.     [refreshBtn setBackgroundImage:[UIImage imageNamed:@"button_refresh"] forState:UIControlStateNormal];  
  14.     [refreshBtn addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventTouchUpInside];  
  15.     UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithCustomView:refreshBtn];  
  16.     self.navigationItem.leftBarButtonItem = refreshItem;  
  17.       
  18. }  

3、添加刷新按钮事件,和按钮旋转方法

[cpp] view plaincopy
  1. //按钮旋转  
  2. - (void)startAnimation:(UIButton *)button{  
  3.     CABasicAnimation *rotate =  
  4.     [CABasicAnimation animationWithKeyPath:@"transform.rotation"];      
  5.     [rotate setByValue:[NSNumber numberWithFloat:M_PI*4]];  
  6.     rotate.duration = 3.0;  
  7.     rotate.timingFunction =  
  8.     [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];  
  9.     [button.layer addAnimation:rotate  
  10.                         forKey:@"myRotationAnimation"];  
  11.       
  12. }  

[cpp] view plaincopy
  1. -(void)refresh:(UIButton *)button  
  2. {  
  3.     [self startAnimation:button];  
  4. //    判断一下table是否处于刷新状态,如果没有则执行本次刷新  
  5.     if (!self.pullTableView.pullTableIsRefreshing) {  
  6.         self.pullTableView.pullTableIsRefreshing = YES;  
  7. //        设置回到top时候table的位置  
  8.         [self.pullTableView setContentOffset:CGPointMake(0, -60) animated:YES];  
  9.         [self performSelector:@selector(refreshTable) withObject:nil afterDelay:3.0];  
  10.     }  
  11.       
  12. }  


源码下载地址:https://github.com/XFZLDXF/RefreshButtonDemo

博客转自http://blog.csdn.net/duxinfeng2010/article/details/10065561
原创粉丝点击