Sfoglia il codice sorgente

解决SectionHeader停留的BUG

解决SectionHeader停留的BUG
MJLee 10 anni fa
parent
commit
f3fa3d8101
3 ha cambiato i file con 21 aggiunte e 4 eliminazioni
  1. 1 1
      MJRefresh.podspec
  2. 17 3
      MJRefresh/Base/MJRefreshHeader.m
  3. 3 0
      MJRefresh/MJRefreshConst.h

+ 1 - 1
MJRefresh.podspec

@@ -1,6 +1,6 @@
 Pod::Spec.new do |s|
     s.name         = 'MJRefresh'
-    s.version      = '3.0.6'
+    s.version      = '3.0.7'
     s.summary      = 'An easy way to use pull-to-refresh'
     s.homepage     = 'https://github.com/CoderMJLee/MJRefresh'
     s.license      = 'MIT'

+ 17 - 3
MJRefresh/Base/MJRefreshHeader.m

@@ -10,7 +10,7 @@
 #import "MJRefreshHeader.h"
 
 @interface MJRefreshHeader()
-
+@property (assign, nonatomic) CGFloat insetTDelta;
 @end
 
 @implementation MJRefreshHeader
@@ -54,12 +54,19 @@ - (void)scrollViewContentOffsetDidChange:(NSDictionary *)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.contentInset;
+     _scrollViewOriginalInset = self.scrollView.contentInset;
     
     // 当前的contentOffset
     CGFloat offsetY = self.scrollView.mj_offsetY;
@@ -105,7 +112,7 @@ - (void)setState:(MJRefreshState)state
         
         // 恢复inset和offset
         [UIView animateWithDuration:MJRefreshSlowAnimationDuration animations:^{
-            self.scrollView.mj_insetT -= self.mj_h;
+            self.scrollView.mj_insetT += self.insetTDelta;
             
             // 自动调整透明度
             if (self.isAutomaticallyChangeAlpha) self.alpha = 0.0;
@@ -126,6 +133,13 @@ - (void)setState:(MJRefreshState)state
     }
 }
 
+- (void)drawRect:(CGRect)rect
+{
+    [super drawRect:rect];
+    
+    
+}
+
 #pragma mark - 公共方法
 - (void)endRefreshing
 {

+ 3 - 0
MJRefresh/MJRefreshConst.h

@@ -3,6 +3,9 @@
 #import <UIKit/UIKit.h>
 #import <objc/message.h>
 
+// 弱引用
+#define MJWeakSelf __weak typeof(self) weakSelf = self;
+
 // 日志输出
 #ifdef DEBUG
 #define MJRefreshLog(...) NSLog(__VA_ARGS__)