Procházet zdrojové kódy

1.修改Apex Mobile目录,移动Refresh -> Common。

Pen Li před 8 roky
rodič
revize
f5cd10f60c

+ 0 - 22
RedAnt Mobile/RedAnt Mobile/Refresh/Footer/JLRefreshFooter.h

@@ -1,22 +0,0 @@
-//
-//  JLRefreshFooter.h
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/7.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import "JLRefreshBasis.h"
-
-UIKIT_EXTERN CGFloat const JLRefreshFooterHeight;
-
-@interface JLRefreshFooter : JLRefreshBasis
-
-@property (nonatomic,assign) BOOL showDefaultTips;
-
-- (void)noMoreData;
-- (void)setRefreshTitle:(NSString *)title forState:(JLRefreshState)state;
-- (NSString *)refreshTitleForState:(JLRefreshState)state;
-- (void)showTip;
-
-@end

+ 0 - 326
RedAnt Mobile/RedAnt Mobile/Refresh/Footer/JLRefreshFooter.m

@@ -1,326 +0,0 @@
-//
-//  JLRefreshFooter.m
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/7.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import "JLRefreshFooter.h"
-
-CGFloat const JLRefreshFooterHeight = 30;
-
-@interface JLRefreshFooter ()
-
-@property (nonatomic,strong) NSMutableDictionary *stateTitle;
-@property (nonatomic,strong) UILabel *refreshTitleLabel;
-@property (nonatomic,assign) BOOL stopWithNomore;
-
-@end
-
-@implementation JLRefreshFooter
-
-- (void)prepareInterface {
-    [super prepareInterface];
-    
-    self.jl_height = JLRefreshFooterHeight;
-}
-
-#pragma mark - SubView
-
-- (UILabel *)refreshTitleLabel {
-    if (!_refreshTitleLabel) {
-        _refreshTitleLabel = [[UILabel alloc] init];
-        _refreshTitleLabel.textAlignment = NSTextAlignmentCenter;
-        _refreshTitleLabel.font = [UIFont systemFontOfSize:14.0f];
-//        _refreshTitleLabel.hidden = YES;
-    }
-    return _refreshTitleLabel;
-}
-
-#pragma mark - Private
-
-- (BOOL)contentSizeIsOutOfScrollViewBounds {
-    // top + content > height
-    return self.scrollView.jl_insetTop + self.scrollView.jl_ContentHeight > self.scrollView.jl_height;
-}
-
-- (NSMutableDictionary *)stateTitle {
-    if (!_stateTitle) {
-        _stateTitle = [@{
-                         @(JLRefreshStateIdle)          : @"pull to load more",
-                         @(JLRefreshStatePulling)       : @"pull to load more",
-                         @(JLRefreshStateWillRefresh)   : @"loosen to load more",
-                         @(JLRefreshStateRefreshing)    : @"loading...",
-                         @(JLRefreshStateNoMore)        : @"no more"
-                         } mutableCopy];
-    }
-    return _stateTitle;
-}
-
-- (void)setRefreshTitleForState:(JLRefreshState)state {
-    if (!self.clear) {
-        self.refreshTitleLabel.text = [self refreshTitleForState:state];
-        [self setNeedsLayout];
-    }
-}
-
-
-#pragma mark - Override
-
-- (void)layoutSubviews {
-    [super layoutSubviews];
-    
-    
-    [self.refreshTitleLabel sizeToFit];
-    CGRect frame = self.refreshTitleLabel.bounds;
-    CGFloat Y = (CGRectGetHeight(self.bounds) - CGRectGetHeight(frame)) * 0.5;
-    CGFloat X = (CGRectGetWidth(self.bounds) - CGRectGetWidth(frame)) * 0.5;
-    self.refreshTitleLabel.jl_y = Y;
-    self.refreshTitleLabel.jl_x = X;
-    
-    [self addSubview:self.refreshTitleLabel];
-    
-}
-
-- (void)willMoveToSuperview:(UIView *)newSuperview {
-    
-    [super willMoveToSuperview:newSuperview];
-    
-    if (newSuperview) { // add
-        
-        self.scrollView.jl_insetBottom += self.jl_height;
-        
-//        self.jl_y = self.scrollView.jl_ContentHeight;
-        // 设置位置
-        self.jl_y = (((int)(self.scrollView.jl_ContentHeight / self.scrollView.jl_height)) + 1) * self.scrollView.jl_height;
-    
-    } else { // remove
-        
-        self.scrollView.jl_insetBottom -= self.jl_height;
-        
-    }
-    
-}
-
-- (void)scrollViewContentSizeDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change {
-    
-    [super scrollViewContentSizeDidChange:change];
-    
-//    self.jl_y = self.scrollView.jl_ContentHeight;
-    // 设置位置
-//    if (self.scrollView.jl_ContentHeight >= self.scrollView.jl_height) {
-//        self.jl_y = self.scrollView.jl_ContentHeight;
-//    } else {
-//        self.jl_y = self.scrollView.jl_height;
-//    }
-    
-    self.jl_y = (((int)(self.scrollView.jl_ContentHeight / self.scrollView.jl_height)) + 1) * self.scrollView.jl_height;
-    
-    if (self.offsetBlock) {
-        self.offsetBlock(0);
-    }
-}
-
-- (void)scrollViewContentOffsetDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change {
-    
-    [super scrollViewContentOffsetDidChange:change];
-
-    if (self.offsetBlock) {
-        self.offsetBlock(self.scrollView.jl_ContentHeight - self.scrollView.jl_offsetY - self.scrollView.jl_height);
-    }
-    
-    if (self.state == JLRefreshStateRefreshing) {
-        return;
-    }
-    
-    CGFloat offsetY = self.scrollView.jl_offsetY + self.scrollView.jl_height;
-    CGFloat startY = self.scrollView.jl_insetBottom + self.scrollView.jl_ContentHeight - self.jl_height;
-    CGFloat idle2WillRefresh = startY + self.jl_height * 1.5;
-    
-    if ([self contentSizeIsOutOfScrollViewBounds]) {
-        
-        
-        if (offsetY < startY) {
-            return;
-        }
-       
-        
-        if (self.scrollView.isDragging) {
-            if (self.state == JLRefreshStateNoMore) {
-                
-                self.state = JLRefreshStateIdle;
-                
-            } else if (self.state == JLRefreshStateIdle) { // 1
-                
-                self.state = JLRefreshStatePulling; // 2
-                
-            } else if (self.state == JLRefreshStatePulling && offsetY < startY) {
-                
-                self.state = JLRefreshStateIdle;
-                
-            } else if (self.state == JLRefreshStatePulling && offsetY >= idle2WillRefresh) { // 完全显示出来才刷新
-                
-                self.state = JLRefreshStateWillRefresh; // 4
-                
-            }
-            
-           
-            
-        } else {
-            
-            // 停止拖动的减速过程
-            if (self.state != JLRefreshStateRefreshing && offsetY >= idle2WillRefresh) {
-                self.state = JLRefreshStateRefreshing;
-            } else {
-                if (self.stopWithNomore) {
-                    [self setState:JLRefreshStateNoMore];
-                }
-                if (self.state != JLRefreshStateNoMore) {
-                    self.state = JLRefreshStateIdle;
-                }
-            }
-            
-        }
-        
-        float percentage = (offsetY - startY) / self.jl_height;
-        if (percentage < 0) {
-            percentage = 0;
-        }
-        self.pullPercentage = percentage;
-        
-        [self showTip];
-        if (self.refreshDelegate && [self.refreshDelegate respondsToSelector:@selector(jl_pullRefresh:state:percentage:)]) {
-            [self.refreshDelegate jl_pullRefresh:self state:self.state percentage:self.pullPercentage];
-        }
-        
-        
-    } else {
-        
-        CGPoint old = [change[@"old"] CGPointValue];
-        CGPoint new = [change[@"new"] CGPointValue];
-        
-        if (self.scrollView.jl_insetTop == self.scrollViewOriginInsetTop && new.y > -self.scrollViewOriginInsetTop && old.y < new.y) { // 上拉,在未超出height的范围内拖动都视为刷新
-            
-            if (self.state == JLRefreshStateRefreshing) return;
-            
-            if (self.scrollView.isDragging) {
-                self.state = JLRefreshStateWillRefresh;
-                self.pullPercentage = 1;
-                [self showTip];
-                if (self.refreshDelegate && [self.refreshDelegate respondsToSelector:@selector(jl_pullRefresh:state:percentage:)]) {
-                    [self.refreshDelegate jl_pullRefresh:self state:self.state percentage:self.pullPercentage];
-                }
-            }
-            
-        }
-
-        
-    }
-    
-    
-    
-    
-}
-
-- (void)scrollViewPanGestureStateDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change {
-    
-    [super scrollViewPanGestureStateDidChange:change];
-    
-    if (self.pan.state == UIGestureRecognizerStateEnded) {
-        
-        if (self.state == JLRefreshStateWillRefresh) {
-            self.state = JLRefreshStateRefreshing;
-        }
-        
-        
-    }
-    
-}
-
-#pragma mark - Setter
-
-- (void)setState:(JLRefreshState)state {
-    
-    JLRefreshState oldState = self.state;
-    
-    if (state == oldState) {
-        return;
-    }
-    
-    if (self.stateChangeBlock) {
-        self.stateChangeBlock(state);
-    }
-    
-    super.state = state;
-    
-     __weak typeof(self) weakself = self;
-    dispatch_async(dispatch_get_main_queue(), ^{
-        [weakself setRefreshTitleForState:state];
-    });
-
-    
-    
-    if (state == JLRefreshStateIdle || state == JLRefreshStateNoMore) {
-        
-        if (oldState != JLRefreshStateRefreshing) {
-            return;
-        }
-        
-        if (weakself.refreshDelegate && [weakself.refreshDelegate respondsToSelector:@selector(jl_endRefresh:)]) {
-            
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [weakself.refreshDelegate jl_endRefresh:weakself];
-            });
-            
-        }
-        
-    } else if (state == JLRefreshStatePulling) {
-        
-        
-    } else if (state == JLRefreshStateWillRefresh) {
-        
-        
-    } else if (state == JLRefreshStateRefreshing) {
-        
-        if (weakself.refreshDelegate && [weakself.refreshDelegate respondsToSelector:@selector(jl_beginRefresh:)]) {
-            
-            dispatch_async(dispatch_get_main_queue(), ^{
-                weakself.stopWithNomore = NO;
-                [weakself.refreshDelegate jl_beginRefresh:weakself];
-            });
-            
-        }
-        
-    }
-    
-}
-
-#pragma mark - Public
-
-- (void)noMoreData {
-    self.state = JLRefreshStateNoMore;
-    if (self.scrollView.isDecelerating) {
-        self.stopWithNomore = YES; // Scrollviewc重新刷新数据后才能赋值NO
-    }
-}
-
-- (void)showTip {
-    self.refreshTitleLabel.hidden = NO;
-}
-
-- (void)setRefreshTitle:(NSString *)title forState:(JLRefreshState)state {
-    if (title == nil) {
-        return;
-    }
-    
-    [self.stateTitle setObject:title forKey:@(state)];
-}
-
-- (NSString *)refreshTitleForState:(JLRefreshState)state {
-    return [self.stateTitle objectForKey:@(state)];
-}
-
-
-
-@end

+ 0 - 17
RedAnt Mobile/RedAnt Mobile/Refresh/Header/JLRefreshHeader.h

@@ -1,17 +0,0 @@
-//
-//  JLRefreshHeader.h
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/6.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import "JLRefreshBasis.h"
-
-@interface JLRefreshHeader : JLRefreshBasis
-
-- (void)setRefreshTitle:(NSString *)title forState:(JLRefreshState)state;
-
-- (NSString *)refreshTitleForState:(JLRefreshState)state;
-
-@end

+ 0 - 230
RedAnt Mobile/RedAnt Mobile/Refresh/Header/JLRefreshHeader.m

@@ -1,230 +0,0 @@
-//
-//  JLRefreshHeader.m
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/6.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import "JLRefreshHeader.h"
-
-@interface JLRefreshHeader ()
-
-@property (nonatomic,strong) NSMutableDictionary *stateTitle;
-
-@property (nonatomic,strong) UILabel *refreshTitleLabel;
-
-@end
-
-@implementation JLRefreshHeader
-
-#pragma mark - private
-
-- (NSMutableDictionary *)stateTitle {
-    if (!_stateTitle) {
-        _stateTitle = [@{
-                         @(JLRefreshStateIdle)          : @"pull to refresh",
-                         @(JLRefreshStatePulling)       : @"pull to refresh",
-                         @(JLRefreshStateWillRefresh)   : @"loosen to refresh",
-                         @(JLRefreshStateRefreshing)    : @"loading..."
-                         } mutableCopy];
-    }
-    return _stateTitle;
-}
-
-- (void)setRefreshTitleForState:(JLRefreshState)state {
-    if (!self.clear) {
-        self.refreshTitleLabel.text = [self refreshTitleForState:state];
-        [self setNeedsLayout];
-    }
-}
-
-#pragma mark - override
-
-- (void)layoutSubviews {
-    [super layoutSubviews];
-    
-    self.jl_y = -self.jl_height;
-    
-    [self.refreshTitleLabel sizeToFit];
-    CGRect frame = self.refreshTitleLabel.bounds;
-    CGFloat Y = (CGRectGetHeight(self.bounds) - CGRectGetHeight(frame)) * 0.5;
-    CGFloat X = (CGRectGetWidth(self.bounds) - CGRectGetWidth(frame)) * 0.5;
-    self.refreshTitleLabel.jl_y = Y;
-    self.refreshTitleLabel.jl_x = X;
-    
-    [self addSubview:self.refreshTitleLabel];
-}
-
-- (void)scrollViewContentOffsetDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change {
-    
-    if (self.offsetBlock) {
-        self.offsetBlock(self.scrollView.jl_offsetY);
-    }
-    
-    // 正在刷新
-    if (self.state == JLRefreshStateRefreshing) {
-        
-        // 解决SectionHeader停留
-        CGFloat insetTop = -self.scrollView.jl_offsetY > self.scrollViewOriginInsetTop ? -self.scrollView.jl_offsetY : self.scrollViewOriginInsetTop;
-        insetTop = insetTop > self.jl_height + self.scrollViewOriginInsetTop ? self.jl_height + self.scrollViewOriginInsetTop : insetTop;
-        self.scrollView.jl_insetTop = insetTop;
-        
-        return;
-    }
-    
-    CGFloat offsetY = self.scrollView.jl_offsetY;
-    CGFloat startY = -self.scrollView.jl_insetTop; // refresh 开始显示的临界点
-    
-    if (offsetY > startY) {
-        return;
-    }
-    
-    CGFloat idle2willRefreshY = startY - self.jl_height; // 正常状态到即将刷新状态临界点
-    
-    if (self.scrollView.isDragging) {
-        
-        if (self.state == JLRefreshStateIdle && offsetY < startY) {
-            
-            self.state = JLRefreshStatePulling;
-            
-        } else if (self.state == JLRefreshStatePulling && offsetY <= idle2willRefreshY) {
-            
-            self.state = JLRefreshStateWillRefresh;
-            
-        } else if (self.state == JLRefreshStatePulling && offsetY > startY) {
-            
-            self.state = JLRefreshStateIdle;
-            
-        } else if (self.state == JLRefreshStateWillRefresh && offsetY > idle2willRefreshY) {
-            
-            self.state = JLRefreshStatePulling;
-        
-        }
-        
-        float percentage = (startY - offsetY) / self.jl_height;
-        if (percentage <= 0) {
-            percentage = 0;
-        }
-        self.pullPercentage = percentage;
-        
-        if (self.refreshDelegate && [self.refreshDelegate respondsToSelector:@selector(jl_pullRefresh:state:percentage:)]) {
-            [self.refreshDelegate jl_pullRefresh:self state:self.state percentage:self.pullPercentage];
-        }
-        
-    }
-
-}
-
-- (void)scrollViewPanGestureStateDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change {
-    if (self.pan.state == UIGestureRecognizerStateEnded && self.state == JLRefreshStateWillRefresh) {
-        // 手松开开始刷新
-        self.state = JLRefreshStateRefreshing;
-    }
-}
-
-- (void)setState:(JLRefreshState)state {
-    JLRefreshState oldState = self.state;
-    
-    if (state == oldState) {
-        return;
-    }
-    
-    if (self.stateChangeBlock) {
-        self.stateChangeBlock(state);
-    }
-    
-    super.state = state;
-    
-    dispatch_async(dispatch_get_main_queue(), ^{
-        [self setRefreshTitleForState:state];
-    });
-    
-    if (state == JLRefreshStateIdle) {
-
-        // 恢复原状态
-        if (oldState != JLRefreshStateRefreshing) {
-            return;
-        }
-        
-        __weak typeof(self) weakself = self;
-        dispatch_async(dispatch_get_main_queue(), ^{
-            [UIView animateWithDuration:JLRefreshDuration animations:^{
-                
-                weakself.scrollView.jl_insetTop = weakself.scrollViewOriginInsetTop;
-                
-            } completion:^(BOOL finished) {
-                
-                if (weakself.refreshDelegate && [weakself.refreshDelegate respondsToSelector:@selector(jl_endRefresh:)]) {
-                    
-                    dispatch_async(dispatch_get_main_queue(), ^{
-                        [weakself.refreshDelegate jl_endRefresh:weakself];
-                    });
-                    
-                }
-                
-            }];
-        });
-
-        
-        
-        
-    } else if (state == JLRefreshStatePulling) {
-        // 下拉刷新
-        
-    } else if (state == JLRefreshStateWillRefresh) {
-        // 松开刷新
-        
-    } else if (state == JLRefreshStateRefreshing) {
-        // 正在刷新
-        __weak typeof(self) weakself = self;
-        dispatch_async(dispatch_get_main_queue(), ^{
-            
-            [UIView animateWithDuration:JLRefreshDuration animations:^{
-                
-                weakself.scrollView.jl_insetTop = weakself.jl_height;
-                
-            } completion:^(BOOL finished) {
-                
-                if (weakself.refreshDelegate && [weakself.refreshDelegate respondsToSelector:@selector(jl_beginRefresh:)]) {
-                    
-                    dispatch_async(dispatch_get_main_queue(), ^{
-                        [weakself.refreshDelegate jl_beginRefresh:weakself];
-                    });
-                    
-                }
-                
-            }];
-            
-        });
-
-    }
-}
-
-#pragma mark - Public
-
-- (void)setRefreshTitle:(NSString *)title forState:(JLRefreshState)state {
-    if (title == nil) {
-        return;
-    }
-    
-    [self.stateTitle setObject:title forKey:@(state)];
-}
-
-- (NSString *)refreshTitleForState:(JLRefreshState)state {
-    return [self.stateTitle objectForKey:@(state)];
-}
-
-#pragma mark - SubView
-
-- (UILabel *)refreshTitleLabel {
-    if (!_refreshTitleLabel) {
-        _refreshTitleLabel = [[UILabel alloc] init];
-        _refreshTitleLabel.textAlignment = NSTextAlignmentCenter;
-        _refreshTitleLabel.font = [UIFont systemFontOfSize:14.0f];
-    }
-    return _refreshTitleLabel;
-}
-
-
-@end

+ 0 - 70
RedAnt Mobile/RedAnt Mobile/Refresh/JLRefreshBasis.h

@@ -1,70 +0,0 @@
-//
-//  JLRefresh.h
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/3.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-#import "UIScrollView+JLRefresh.h"
-#import "UIView+JLExtension.h"
-
-typedef enum {
-    /**空闲状态*/
-    JLRefreshStateIdle = 1 << 0,
-    /**下拉状态*/
-    JLRefreshStatePulling = 1 << 1,
-    /**即将刷新,还未松开*/
-    JLRefreshStateWillRefresh = 1 << 2,
-    /**刷新状态,松开*/
-    JLRefreshStateRefreshing = 1 << 3,
-    /**没有更多数据*/
-    JLRefreshStateNoMore = 1 << 4
-    
-} JLRefreshState;
-
-UIKIT_EXTERN NSTimeInterval const JLRefreshDuration;
-UIKIT_EXTERN CGFloat const JLRefreshHeight;
-UIKIT_EXTERN NSString *const JLRefreshKeyPathContentOffset;
-UIKIT_EXTERN NSString *const JLRefreshKeyPathContentSize;
-UIKIT_EXTERN NSString *const JLRefreshKeyPathContentInset;
-UIKIT_EXTERN NSString *const JLRefreshKeyPathState;
-
-@class JLRefreshBasis;
-@protocol JLRefreshDelegate <NSObject>
-
-- (void)jl_pullRefresh:(JLRefreshBasis *)refresh state:(JLRefreshState)state percentage:(float)percentage;//percentage's range [0,max)
-
-- (void)jl_beginRefresh:(JLRefreshBasis *)refresh;
-
-- (void)jl_endRefresh:(JLRefreshBasis *)refresh;
-
-@end
-
-@interface JLRefreshBasis : UIView
-
-@property (nonatomic,assign) JLRefreshState state;
-@property (nonatomic,assign) float pullPercentage;
-@property (nonatomic,weak,readonly) UIScrollView *scrollView;
-@property (nonatomic,assign,readonly) CGFloat scrollViewOriginInsetTop; ///<header只管Top
-@property (nonatomic,assign,readonly) CGFloat scrollViewOriginInsetBottom; ///<footer只管Bottom
-@property (nonatomic,strong,readonly) UIPanGestureRecognizer *pan;
-@property (nonatomic,weak) id<JLRefreshDelegate> refreshDelegate;
-@property (nonatomic,assign) float pullPercentate;
-@property (nonatomic,copy) void (^stateChangeBlock)(JLRefreshState state);
-@property (nonatomic,copy) void (^offsetBlock)(CGFloat offset);
-@property (nonatomic,assign) BOOL clear;
-
-- (NSString *)refreshTitleForState:(JLRefreshState)state;
-
-- (void)endRefresh;
-
-- (void)prepareInterface;
-
-// 需要子类实现
-- (void)scrollViewContentSizeDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change;
-- (void)scrollViewContentOffsetDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change;
-- (void)scrollViewPanGestureStateDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change;
-
-@end

+ 0 - 152
RedAnt Mobile/RedAnt Mobile/Refresh/JLRefreshBasis.m

@@ -1,152 +0,0 @@
-//
-//  JLRefresh.m
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/3.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import "JLRefreshBasis.h"
-
-NSTimeInterval const JLRefreshDuration = 0.25;
-CGFloat const JLRefreshHeight = 64;
-NSString *const JLRefreshKeyPathContentOffset = @"contentOffset";
-NSString *const JLRefreshKeyPathContentSize = @"contentSize";
-NSString *const JLRefreshKeyPathContentInset = @"contentInset";
-NSString *const JLRefreshKeyPathState = @"state";
-
-@interface JLRefreshBasis ()
-{
-    __weak UIScrollView *_scrollView;
-    UIPanGestureRecognizer *_pan;
-}
-
-@property (nonatomic,assign) CGFloat scrollViewOriginInsetTop;
-@property (nonatomic,assign) CGFloat scrollViewOriginInsetBottom;
-
-@end
-
-@implementation JLRefreshBasis
-
-- (instancetype)initWithFrame:(CGRect)frame {
-    if (self = [super initWithFrame:frame]) {
-        [self prepareInterface];
-        self.state = JLRefreshStateIdle;
-    }
-    return self;
-}
-
-- (void)prepareInterface {
-    self.autoresizingMask = UIViewAutoresizingFlexibleWidth;
-    self.backgroundColor = [UIColor clearColor];
-    self.jl_height = JLRefreshHeight;
-}
-
-- (void)layoutSubviews {
-    [super layoutSubviews];
-    self.jl_width = CGRectGetWidth(self.superview.frame);
-}
-
-//- (void)dealloc {
-//    [self resignObserver];
-//}
-
-/**添加观察者*/
-- (void)registObserver {
-    NSKeyValueObservingOptions options = NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld;
-    
-    [_scrollView addObserver:self forKeyPath:JLRefreshKeyPathContentOffset options:options context:nil];
-    [_scrollView addObserver:self forKeyPath:JLRefreshKeyPathContentSize options:options context:nil];
-    _pan = _scrollView.panGestureRecognizer;
-    [_pan addObserver:self forKeyPath:JLRefreshKeyPathState options:options context:nil];
-    
-}
-
-/**移除观察者*/
-- (void)resignObserver {
-    
-    /** fix crash while exit viewcontroller <Exception: NSInternalInconsistencyException>
-     *   self.superview == _scrollview
-     *   but superview is readonly ,while invoke this method,the _scrollview has been dealloced,then it get a wild pointer
-     *   if we use self.superview to get the object that is nil
-     */
-    [self.superview removeObserver:self forKeyPath:JLRefreshKeyPathContentOffset];
-    [self.superview removeObserver:self forKeyPath:JLRefreshKeyPathContentSize];
-    [_pan removeObserver:self forKeyPath:JLRefreshKeyPathState];
-    _pan = nil;
-    
-    
-}
-
-- (void)willMoveToSuperview:(UIView *)newSuperview {
-    [super willMoveToSuperview:newSuperview];
-    
-    [self resignObserver];
-    if (newSuperview == nil) {
-        _scrollView = nil;
-        return;
-    }
-    // 父控件不是ScrollView,不做设置
-    if (newSuperview && ![newSuperview isKindOfClass:[UIScrollView class]]) {
-        _scrollView = nil;
-        return;
-    }
-
-    _scrollView = (UIScrollView *)newSuperview;
-    _scrollView.alwaysBounceVertical = YES; // 永远支持垂直弹簧效果
-    
-    self.state = JLRefreshStateIdle;
-        
-    self.scrollViewOriginInsetTop = _scrollView.jl_insetTop;
-    self.scrollViewOriginInsetBottom = _scrollView.jl_insetBottom;
-    
-    [self registObserver];
-}
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
-    
-    if (!self.isUserInteractionEnabled) {
-        return;
-    }
-    
-    if (keyPath == JLRefreshKeyPathContentSize) {
-        [self scrollViewContentSizeDidChange:change];
-    }
-    
-    if (self.hidden) {
-        return;
-    }
-    
-    if (keyPath == JLRefreshKeyPathContentOffset) {
-        [self scrollViewContentOffsetDidChange:change];
-    }
-    
-    
-    if (keyPath == JLRefreshKeyPathState) {
-        [self scrollViewPanGestureStateDidChange:change];
-    }
-    
-}
-
-- (void)scrollViewContentSizeDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change {
-    
-}
-
-- (void)scrollViewContentOffsetDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change {
-        
-}
-
-- (void)scrollViewPanGestureStateDidChange:(NSDictionary<NSKeyValueChangeKey,id> *)change {
-    
-}
-
-- (void)setState:(JLRefreshState)state {
-    _state = state;
-}
-
-- (void)endRefresh {
-    
-    self.state = JLRefreshStateIdle;
-}
-
-@end

+ 0 - 27
RedAnt Mobile/RedAnt Mobile/Refresh/UIScrollView+JLRefresh.h

@@ -1,27 +0,0 @@
-//
-//  UIScrollView+JLRefresh.h
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/3.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-@class JLRefreshBasis;
-
-@interface UIScrollView (JLRefresh)
-
-@property (nonatomic,strong) JLRefreshBasis *jl_header;
-
-@property (nonatomic,strong) JLRefreshBasis *jl_footer;
-
-@property (nonatomic,assign) CGFloat jl_offsetY;
-
-@property (nonatomic,assign) CGFloat jl_insetTop;
-
-@property (nonatomic,assign) CGFloat jl_insetBottom;
-
-@property (nonatomic,assign) CGFloat jl_ContentHeight;
-
-@end

+ 0 - 92
RedAnt Mobile/RedAnt Mobile/Refresh/UIScrollView+JLRefresh.m

@@ -1,92 +0,0 @@
-//
-//  UIScrollView+JLRefresh.m
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/3.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import "UIScrollView+JLRefresh.h"
-#import "JLRefreshBasis.h"
-#import <objc/runtime.h>
-
-@implementation UIScrollView (JLRefresh)
-
-static const char JLHeaderKey = '\a';
-
-- (void)setJl_header:(JLRefreshBasis *)jl_header {
-    
-    if (jl_header) {
-        [self.jl_header removeFromSuperview];
-        [self insertSubview:jl_header atIndex:0];
-        
-        [self willChangeValueForKey:@"jl_header"];
-        objc_setAssociatedObject(self, &JLHeaderKey, jl_header, OBJC_ASSOCIATION_ASSIGN);
-        [self didChangeValueForKey:@"jl_header"];
-    }
-    
-}
-
-- (JLRefreshBasis *)jl_header {
-    return objc_getAssociatedObject(self, &JLHeaderKey);
-}
-
-static const char JLFooterKey = '\b';
-
-- (void)setJl_footer:(JLRefreshBasis *)jl_footer {
-    
-    if (jl_footer) {
-        [self.jl_footer removeFromSuperview];
-        [self insertSubview:jl_footer atIndex:0];
-        
-        [self willChangeValueForKey:@"jl_footer"];
-        objc_setAssociatedObject(self, &JLFooterKey, jl_footer, OBJC_ASSOCIATION_ASSIGN);
-        [self didChangeValueForKey:@"jl_footer"];
-    }
-}
-
-- (JLRefreshBasis *)jl_footer {
-    return objc_getAssociatedObject(self, &JLFooterKey);
-}
-
-- (void)setJl_offsetY:(CGFloat)jl_offsetY {
-    CGPoint contentOff = self.contentOffset;
-    contentOff.y = jl_offsetY;
-    self.contentOffset = contentOff;
-}
-
-- (CGFloat)jl_offsetY {
-    return self.contentOffset.y;
-}
-
-- (void)setJl_insetTop:(CGFloat)jl_insetTop {
-    UIEdgeInsets inset = self.contentInset;
-    inset.top = jl_insetTop;
-    self.contentInset = inset;
-}
-
-- (CGFloat)jl_insetTop {
-    return self.contentInset.top;
-}
-
-- (void)setJl_insetBottom:(CGFloat)jl_insetBottom {
-    UIEdgeInsets inset = self.contentInset;
-    inset.bottom = jl_insetBottom;
-    self.contentInset = inset;
-}
-
-- (CGFloat)jl_insetBottom {
-    return self.contentInset.bottom;
-}
-
-- (void)setJl_ContentHeight:(CGFloat)jl_ContentHeight {
-    CGSize contentSize = self.contentSize;
-    contentSize.height = jl_ContentHeight;
-    self.contentSize = contentSize;
-}
-
-- (CGFloat)jl_ContentHeight {
-    return self.contentSize.height;
-}
-
-@end

+ 0 - 22
RedAnt Mobile/RedAnt Mobile/Refresh/UIView+JLExtension.h

@@ -1,22 +0,0 @@
-//
-//  UIView+Extension.h
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/3.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-@interface UIView (JLExtension)
-
-#pragma mark - Frame
-
-@property (nonatomic,assign) CGFloat jl_x;
-@property (nonatomic,assign) CGFloat jl_y;
-@property (nonatomic,assign) CGFloat jl_height;
-@property (nonatomic,assign) CGFloat jl_width;
-@property (nonatomic,assign) CGFloat jl_right;
-@property (nonatomic,assign) CGFloat jl_bottom;
-
-@end

+ 0 - 71
RedAnt Mobile/RedAnt Mobile/Refresh/UIView+JLExtension.m

@@ -1,71 +0,0 @@
-//
-//  UIView+Extension.m
-//  JLRefreshDemo
-//
-//  Created by Jack on 2017/3/3.
-//  Copyright © 2017年 mini1. All rights reserved.
-//
-
-#import "UIView+JLExtension.h"
-
-@implementation UIView (JLExtension)
-
-#pragma mark - Frame
-
-- (void)setJl_x:(CGFloat)jl_x {
-    CGRect frame = self.frame;
-    frame.origin.x = jl_x;
-    self.frame = frame;
-}
-
-- (CGFloat)jl_x {
-    return self.frame.origin.x;
-}
-
-- (void)setJl_y:(CGFloat)jl_y {
-    CGRect frame = self.frame;
-    frame.origin.y = jl_y;
-    self.frame = frame;
-}
-
-- (CGFloat)jl_y {
-    return self.frame.origin.y;
-}
-
-- (void)setJl_width:(CGFloat)jl_width {
-    CGRect frame = self.frame;
-    frame.size.width = jl_width;
-    self.frame = frame;
-}
-
-- (CGFloat)jl_width {
-    return self.frame.size.width;
-}
-
-- (void)setJl_height:(CGFloat)jl_height {
-    CGRect frame = self.frame;
-    frame.size.height = jl_height;
-    self.frame = frame;
-}
-
-- (CGFloat)jl_height {
-    return self.frame.size.height;
-}
-
-- (void)setJl_right:(CGFloat)jl_right {
-    self.jl_x = jl_right - self.jl_width;
-}
-
-- (CGFloat)jl_right {
-    return self.jl_x + self.jl_width;
-}
-
-- (void)setJl_bottom:(CGFloat)jl_bottom {
-    self.jl_y = jl_bottom - self.jl_height;
-}
-
-- (CGFloat)jl_bottom {
-    return self.jl_y + self.jl_height;
-}
-
-@end