Pārlūkot izejas kodu

Add ignoredInset property to prevent exposing header or footer

Add ignoredInset property to prevent exposing header or footer
MJLee 10 gadi atpakaļ
vecāks
revīzija
d9d0a17e0a

+ 1 - 1
MJRefresh.podspec

@@ -1,6 +1,6 @@
 Pod::Spec.new do |s|
   s.name         = "MJRefresh"
-  s.version      = "2.2.1"
+  s.version      = "2.3.0"
   s.summary      = "The easiest way to use pull-to-refresh"
   s.homepage     = "https://github.com/CoderMJLee/MJRefresh"
   s.license      = "MIT"

+ 2 - 2
MJRefresh/Base/MJRefreshBackFooter.m

@@ -65,9 +65,9 @@ - (void)scrollViewContentSizeDidChange:(NSDictionary *)change
     [super scrollViewContentSizeDidChange:change];
     
     // 内容的高度
-    CGFloat contentHeight = self.scrollView.mj_contentH;
+    CGFloat contentHeight = self.scrollView.mj_contentH + self.ignoredInsetBottom;
     // 表格的高度
-    CGFloat scrollHeight = self.scrollView.mj_h - self.scrollViewOriginalInset.top - self.scrollViewOriginalInset.bottom;
+    CGFloat scrollHeight = self.scrollView.mj_h - self.scrollViewOriginalInset.top - self.scrollViewOriginalInset.bottom + self.ignoredInsetBottom;
     // 这里一定是用:self.scrollView.mj_insetT 和 self.scrollViewOriginalInset.bottom;
     // 设置位置和尺寸
     self.mj_y = MAX(contentHeight, scrollHeight);

+ 1 - 1
MJRefresh/Base/MJRefreshComponent.m

@@ -193,7 +193,7 @@ - (void)executeRefreshingCallback
             self.refreshingBlock();
         }
         if ([self.refreshingTarget respondsToSelector:self.refreshingAction]) {
-            msgSend(msgTarget(self.refreshingTarget), self.refreshingAction, self);
+            MJRefreshMsgSend(MJRefreshMsgTarget(self.refreshingTarget), self.refreshingAction, self);
         }
     });
 }

+ 3 - 0
MJRefresh/Base/MJRefreshFooter.h

@@ -19,4 +19,7 @@
 - (void)noticeNoMoreData;
 /** 重置没有更多的数据(消除没有更多数据的状态) */
 - (void)resetNoMoreData;
+
+/** 忽略多少ignoredInsetBottom */
+@property (assign, nonatomic) CGFloat ignoredInsetBottom;
 @end

+ 3 - 0
MJRefresh/Base/MJRefreshHeader.h

@@ -19,4 +19,7 @@
 @property (copy, nonatomic) NSString *lastUpdatedTimeKey;
 /** 上一次下拉刷新成功的时间 */
 @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime;
+
+/** 忽略多少ignoredInsetTop */
+@property (assign, nonatomic) CGFloat ignoredInsetTop;
 @end

+ 1 - 1
MJRefresh/Base/MJRefreshHeader.m

@@ -45,7 +45,7 @@ - (void)placeSubviews
     [super placeSubviews];
     
     // 设置y值(当自己的高度发生改变了,肯定要重新调整Y值,所以放到placeSubviews方法中设置y值)
-    self.mj_y = - self.mj_h;
+    self.mj_y = - self.mj_h - self.ignoredInsetTop;
 }
 
 - (void)scrollViewContentOffsetDidChange:(NSDictionary *)change

+ 8 - 10
MJRefresh/MJRefreshConst.h

@@ -5,25 +5,23 @@
 
 // 日志输出
 #ifdef DEBUG
-#define MJLog(...) NSLog(__VA_ARGS__)
+#define MJRefreshLog(...) NSLog(__VA_ARGS__)
 #else
-#define MJLog(...)
+#define MJRefreshLog(...)
 #endif
 
-#define iOS(version) ([[UIDevice currentDevice].systemVersion doubleValue] >= version)
-
 // 过期提醒
-#define MJDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead)
+#define MJRefreshDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead)
 
-// 运行时objc_msgSend
-#define msgSend(...) ((void (*)(void *, SEL, UIView *))objc_msgSend)(__VA_ARGS__)
-#define msgTarget(target) (__bridge void *)(target)
+// 运行时objc_MJRefreshMsgSend
+#define MJRefreshMsgSend(...) ((void (*)(void *, SEL, UIView *))objc_msgSend)(__VA_ARGS__)
+#define MJRefreshMsgTarget(target) (__bridge void *)(target)
 
 // RGB颜色
-#define MJColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
+#define MJRefreshColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
 
 // 文字颜色
-#define MJRefreshLabelTextColor MJColor(90, 90, 90)
+#define MJRefreshLabelTextColor MJRefreshColor(90, 90, 90)
 
 // 字体大小
 #define MJRefreshLabelFont [UIFont boldSystemFontOfSize:14]

BIN
MJRefreshExample/MJRefreshExample.xcodeproj/project.xcworkspace/xcuserdata/mj.xcuserdatad/UserInterfaceState.xcuserstate


+ 4 - 0
MJRefreshExample/MJRefreshExample/Classes/MJTableViewController.m

@@ -228,6 +228,10 @@ - (void)example18
 {
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
     self.tableView.footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
+    // 设置了底部inset
+    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 30, 0);
+    // 忽略掉底部inset
+    self.tableView.footer.ignoredInsetBottom = 30;
 }
 
 #pragma mark UITableView + 上拉刷新 自动回弹的上拉02