Find file
Fetching contributors…
Cannot retrieve contributors at this time
52 lines (42 sloc) 2.57 KB
It is:
- a pull-to-refresh implementation
- very easy to implement
- doesn't suck
To implement it:
- add the four files (PullToRefreshView.{h,m}, arrow.png and arrow@2x.png) to your project
- add the QuartzCore framework to your project if you haven't done so yet
- #import "PullToRefreshView.h"
- add an ivar: PullToRefreshView *pull; // or whatever you want to name it
- in loadView or viewDidLoad, add this (and be sure to release in dealloc/viewDidUnload, etc):
pull = [[PullToRefreshView alloc] initWithScrollView:<your scroll view here>];
[pull setDelegate:self];
[<your scroll view here> addSubview:pull];
- implement two delegate methods:
// called when the user pulls-to-refresh
- (void)pullToRefreshViewShouldRefresh:(PullToRefreshView *)view;
// called when the date shown needs to be updated, optional
- (NSDate *)pullToRefreshViewLastUpdated:(PullToRefreshView *)view;
- call -finishedLoading on the PullToRefreshView when you finished loading (or got an error, etc)
- that's it! no need to forward on UIScrollView delegate methods or anything silly like that.
To use with a web view:
pullToRefreshView = [[PullToRefreshView alloc] initWithWebView:<your web view here>];
[pullToRefreshView setDelegate:self];
[pullToRefreshView.scrollview addSubview:pullToRefreshView];
To dismiss the view after a certain period, even if finishedLoading isn't called:
pullToRefreshView.timeout = 5; // 5 seconds
To customize the appearance, edit the statusLabel, lastUpdatedLabel, activityView, and arrowImage properties:
pullToRefreshView.statusLabel.textColor = [UIColor whiteColor];
pullToRefreshView.statusLabel.shadowColor = [UIColor lightGrayColor];
pullToRefreshView.lastUpdatedLabel.textColor = [UIColor whiteColor];
pullToRefreshView.lastUpdatedLabel.shadowColor = [UIColor lightGrayColor];
pullToRefreshView.activityView.color = [UIColor lightGrayColor];
pullToRefreshView.arrowImage.contents = (id) [UIImage imageNamed:@"my_arrow"].CGImage;
To customize the content, edit the pullToRefreshText, releaseToRefreshText, loadingText, and dateFormatter properties:
pullToRefreshView.pullToRefreshText = @"Pull up to load more stories...";
pullToRefreshView.releaseToRefreshText = @"Release to refresh stories...";
pullToRefreshView.loadingText = @"Refreshing stories...";
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
formatter.dateStyle = NSDateFormatterShortStyle;
formatter.timeStyle = NSDateFormatterNoStyle;
pullToRefreshView.dateFormatter = formatter;