完全可自定义下拉刷新iOS控件:CBStoreHouseRefreshControl

jopen 9年前

这是一个完全可自定义的下拉刷新iOS控件,灵感源于 Storehouse iOS 应用。

screenshot1

你可以通过一个plist文件使用任何形状,像这样的这是我公司的标志:

screenshot2


需要什么样的文件?

你只需要将 CBStoreHouseRefreshControl (.h .m) 包含在你的项目中。

CocoaPods support is coming very soon!

How to use it

You can attach it to any UIScrollView like UITableView or UICollectionView using following simple static method:

+ (CBStoreHouseRefreshControl*)attachToScrollView:(UIScrollView *)scrollView                                             target:(id)target                                      refreshAction:(SEL)refreshAction                                              plist:(NSString *)plist;    self.storeHouseRefreshControl = [CBStoreHouseRefreshControl attachToScrollView:self.tableView target:self refreshAction:@selector(refreshTriggered:) plist:@"storehouse"];

Or, using this method for more configurable options:

+ (CBStoreHouseRefreshControl*)attachToScrollView:(UIScrollView *)scrollView                                             target:(id)target                                      refreshAction:(SEL)refreshAction                                              plist:(NSString *)plist                                              color:(UIColor *)color                                          lineWidth:(CGFloat)lineWidth                                         dropHeight:(CGFloat)dropHeight                                              scale:(CGFloat)scale                               horizontalRandomness:(CGFloat)horizontalRandomness                            reverseLoadingAnimation:(BOOL)reverseLoadingAnimation                            internalAnimationFactor:(CGFloat)internalAnimationFactor;    self.storeHouseRefreshControl = [CBStoreHouseRefreshControl attachToScrollView:self.tableView target:self refreshAction:@selector(refreshTriggered:) plist:@"storehouse" color:[UIColor whiteColor] lineWidth:1.5 dropHeight:80 scale:1 horizontalRandomness:150 reverseLoadingAnimation:YES internalAnimationFactor:0.5];

Then, implement UIScrollViewDelegate in your UIViewController if you haven't already, and pass the calls through to the refresh control:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView  {      [self.storeHouseRefreshControl scrollViewDidScroll];  }    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate  {      [self.storeHouseRefreshControl scrollViewDidEndDragging];  }

Lastly, make sure you've implemented the refreshAction you passed it earlier to listen for refresh triggers:

- (void)refreshTriggered  {      //call your loading method here        //Finshed loading the data, reset the refresh control      [self.storeHouseRefreshControl finishedLoading];  }

项目主页:http://www.open-open.com/lib/view/home/1415256144496