Skip to content
A shape changing & physical ball pull-to-refresh.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
KYJellyPullToRefresh.xcodeproj
KYJellyPullToRefresh
KYJellyPullToRefreshTests
KYJellyViewClass
KYJellyPullToRefresh.podspec
LICENSE
README.md
ball.gif
logo.png

README.md

KYJellyPullToRefresh

CocoaPods Version License Platform

##Usage

pod 'KYJellyPullToRefresh', '~> 1.1.0'

##How To Use

Firstly,in your ViewController or TableViewController,initiate the Jellview and the "displayLink" in the - (void)scrollViewDidScroll:(UIScrollView *)scrollView method: Like this:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (self.displayLink == nil && (-scrollView.contentOffset.y - 64.5) > 0) {
        self.jellyView = [[JellyView alloc]initWithFrame:CGRectMake(0, -jellyHeaderHeight , [UIScreen mainScreen].bounds.size.width, jellyHeaderHeight)];
        self.jellyView.backgroundColor = [UIColor clearColor];
        [self.view insertSubview:self.jellyView aboveSubview:self.tableView];
        self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkAction:)];
        [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
    }
}

Then you should change the controlPoint of the Bezier Path

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

    CGFloat offset = -scrollView.contentOffset.y - 64.5;
    if (offset >= 130) {
        self.jellyView.isLoading = YES;
        [UIView animateWithDuration:0.3 delay:0.0f usingSpringWithDamping:0.4f initialSpringVelocity:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^{
            
            self.jellyView.controlPoint.center = CGPointMake(self.jellyView.userFrame.size.width / 2, jellyHeaderHeight);
            NSLog(@"self.jellyView.controlPoint.center:%@",NSStringFromCGPoint(self.jellyView.controlPoint.center));
            self.tableView.contentInset = UIEdgeInsetsMake(130+64.5, 0, 0, 0);
        } completion:^(BOOL finished) {
            [self performSelector:@selector(backToTop) withObject:nil afterDelay:2.0f];
        }];
    }
}

Lastest,remove everything:

//动画结束,删除一切
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    if (self.jellyView.isLoading == NO) {
        [self.jellyView removeFromSuperview];
        self.jellyView = nil;
        [self.displayLink invalidate];
        self.displayLink = nil;
    }
}

Intro: http://kittenyang.com/cadisplaylinkanduibezierpath/

##License This project is under MIT License. See LICENSE file for more information.

You can’t perform that action at this time.