From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001
From: 单军华
Date: Wed, 11 Jul 2018 10:47:42 +0800
Subject: [PATCH] 首次上传

---
 screendisplay/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.m |  149 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 149 insertions(+), 0 deletions(-)

diff --git a/screendisplay/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.m b/screendisplay/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.m
new file mode 100755
index 0000000..7b7249c
--- /dev/null
+++ b/screendisplay/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.m
@@ -0,0 +1,149 @@
+//  ������������: https://github.com/CoderMJLee/MJRefresh
+//  ������������: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
+//  MJRefreshHeader.m
+//  MJRefreshExample
+//
+//  Created by MJ Lee on 15/3/4.
+//  Copyright (c) 2015��� ���������. All rights reserved.
+//
+
+#import "MJRefreshHeader.h"
+
+@interface MJRefreshHeader()
+@property (assign, nonatomic) CGFloat insetTDelta;
+@end
+
+@implementation MJRefreshHeader
+#pragma mark - ������������
++ (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock
+{
+    MJRefreshHeader *cmp = [[self alloc] init];
+    cmp.refreshingBlock = refreshingBlock;
+    return cmp;
+}
++ (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action
+{
+    MJRefreshHeader *cmp = [[self alloc] init];
+    [cmp setRefreshingTarget:target refreshingAction:action];
+    return cmp;
+}
+
+#pragma mark - ���������������������
+- (void)prepare
+{
+    [super prepare];
+    
+    // ������key
+    self.lastUpdatedTimeKey = MJRefreshHeaderLastUpdatedTimeKey;
+    
+    // ������������
+    self.mj_h = MJRefreshHeaderHeight;
+}
+
+- (void)placeSubviews
+{
+    [super placeSubviews];
+    
+    // ������y���(���������������������������������������������������������Y������������������placeSubviews���������������y���)
+    self.mj_y = - self.mj_h - self.ignoredScrollViewContentInsetTop;
+}
+
+- (void)scrollViewContentOffsetDidChange:(NSDictionary *)change
+{
+    [super scrollViewContentOffsetDidChange:change];
+    
+    // ������������refreshing������
+    if (self.state == MJRefreshStateRefreshing) {
+        // ������������
+        if (self.window == nil) return;
+        
+        // sectionheader������������
+        CGFloat insetT = - self.scrollView.mj_offsetY > _scrollViewOriginalInset.top ? - self.scrollView.mj_offsetY : _scrollViewOriginalInset.top;
+        insetT = insetT > self.mj_h + _scrollViewOriginalInset.top ? self.mj_h + _scrollViewOriginalInset.top : insetT;
+        self.scrollView.mj_insetT = insetT;
+        
+        self.insetTDelta = _scrollViewOriginalInset.top - insetT;
+        return;
+    }
+    
+    // ���������������������������������contentInset������������
+     _scrollViewOriginalInset = self.scrollView.mj_inset;
+    
+    // ���������contentOffset
+    CGFloat offsetY = self.scrollView.mj_offsetY;
+    // ���������������������������offsetY
+    CGFloat happenOffsetY = - self.scrollViewOriginalInset.top;
+    
+    // ������������������������������������������������������������
+    // >= -> >
+    if (offsetY > happenOffsetY) return;
+    
+    // ������ ��� ������������ ������������
+    CGFloat normal2pullingOffsetY = happenOffsetY - self.mj_h;
+    CGFloat pullingPercent = (happenOffsetY - offsetY) / self.mj_h;
+    
+    if (self.scrollView.isDragging) { // ������������������
+        self.pullingPercent = pullingPercent;
+        if (self.state == MJRefreshStateIdle && offsetY < normal2pullingOffsetY) {
+            // ������������������������
+            self.state = MJRefreshStatePulling;
+        } else if (self.state == MJRefreshStatePulling && offsetY >= normal2pullingOffsetY) {
+            // ������������������
+            self.state = MJRefreshStateIdle;
+        }
+    } else if (self.state == MJRefreshStatePulling) {// ������������ && ���������
+        // ������������
+        [self beginRefreshing];
+    } else if (pullingPercent < 1) {
+        self.pullingPercent = pullingPercent;
+    }
+}
+
+- (void)setState:(MJRefreshState)state
+{
+    MJRefreshCheckState
+    
+    // ���������������������
+    if (state == MJRefreshStateIdle) {
+        if (oldState != MJRefreshStateRefreshing) return;
+        
+        // ������������������
+        [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:self.lastUpdatedTimeKey];
+        [[NSUserDefaults standardUserDefaults] synchronize];
+        
+        // ������inset���offset
+        [UIView animateWithDuration:MJRefreshSlowAnimationDuration animations:^{
+            self.scrollView.mj_insetT += self.insetTDelta;
+            
+            // ���������������������
+            if (self.isAutomaticallyChangeAlpha) self.alpha = 0.0;
+        } completion:^(BOOL finished) {
+            self.pullingPercent = 0.0;
+            
+            if (self.endRefreshingCompletionBlock) {
+                self.endRefreshingCompletionBlock();
+            }
+        }];
+    } else if (state == MJRefreshStateRefreshing) {
+         dispatch_async(dispatch_get_main_queue(), ^{
+            [UIView animateWithDuration:MJRefreshFastAnimationDuration animations:^{
+                CGFloat top = self.scrollViewOriginalInset.top + self.mj_h;
+                // ������������������top
+                self.scrollView.mj_insetT = top;
+                // ������������������
+                CGPoint offset = self.scrollView.contentOffset;
+                offset.y = -top;
+                [self.scrollView setContentOffset:offset animated:NO];
+            } completion:^(BOOL finished) {
+                [self executeRefreshingCallback];
+            }];
+         });
+    }
+}
+
+#pragma mark - ������������
+- (NSDate *)lastUpdatedTime
+{
+    return [[NSUserDefaults standardUserDefaults] objectForKey:self.lastUpdatedTimeKey];
+}
+@end

--
Gitblit v1.8.0