Browse Source

Add prefix 'mj_ ' into category

Add prefix 'mj_ ' into category
MJLee 10 years ago
parent
commit
3b41316b49
100 changed files with 276 additions and 249 deletions
  1. 1 1
      MJRefresh.podspec
  2. 2 2
      MJRefresh/Base/MJRefreshBackFooter.m
  3. 1 1
      MJRefresh/Base/MJRefreshFooter.m
  4. 7 4
      MJRefresh/UIScrollView+MJRefresh.h
  5. 44 23
      MJRefresh/UIScrollView+MJRefresh.m
  6. 166 167
      MJRefreshExample.xcodeproj/project.pbxproj
  7. 0 0
      MJRefreshExample/Base.lproj/LaunchScreen.xib
  8. 0 0
      MJRefreshExample/Base.lproj/Main.storyboard
  9. 0 0
      MJRefreshExample/Classes/Category/UIViewController+Example.h
  10. 0 0
      MJRefreshExample/Classes/Category/UIViewController+Example.m
  11. 0 0
      MJRefreshExample/Classes/DIY/MJChiBaoZiFooter.h
  12. 0 0
      MJRefreshExample/Classes/DIY/MJChiBaoZiFooter.m
  13. 0 0
      MJRefreshExample/Classes/DIY/MJChiBaoZiFooter2.h
  14. 0 0
      MJRefreshExample/Classes/DIY/MJChiBaoZiFooter2.m
  15. 0 0
      MJRefreshExample/Classes/DIY/MJChiBaoZiHeader.h
  16. 0 0
      MJRefreshExample/Classes/DIY/MJChiBaoZiHeader.m
  17. 0 0
      MJRefreshExample/Classes/DIY/MJDIYAutoFooter.h
  18. 0 0
      MJRefreshExample/Classes/DIY/MJDIYAutoFooter.m
  19. 0 0
      MJRefreshExample/Classes/DIY/MJDIYBackFooter.h
  20. 0 0
      MJRefreshExample/Classes/DIY/MJDIYBackFooter.m
  21. 0 0
      MJRefreshExample/Classes/DIY/MJDIYHeader.h
  22. 0 0
      MJRefreshExample/Classes/DIY/MJDIYHeader.m
  23. 0 0
      MJRefreshExample/Classes/First/MJExample.h
  24. 0 0
      MJRefreshExample/Classes/First/MJExample.m
  25. 0 0
      MJRefreshExample/Classes/First/MJExampleViewController.h
  26. 5 5
      MJRefreshExample/Classes/First/MJExampleViewController.m
  27. 0 0
      MJRefreshExample/Classes/First/MJExampleWindow.h
  28. 0 0
      MJRefreshExample/Classes/First/MJExampleWindow.m
  29. 0 0
      MJRefreshExample/Classes/First/MJNavigationController.h
  30. 0 0
      MJRefreshExample/Classes/First/MJNavigationController.m
  31. 0 0
      MJRefreshExample/Classes/First/MJSingleViewController.h
  32. 5 5
      MJRefreshExample/Classes/First/MJSingleViewController.m
  33. 0 0
      MJRefreshExample/Classes/First/MJTempViewController.h
  34. 0 0
      MJRefreshExample/Classes/First/MJTempViewController.m
  35. 0 0
      MJRefreshExample/Classes/Other/AppDelegate.h
  36. 0 0
      MJRefreshExample/Classes/Other/AppDelegate.m
  37. 0 0
      MJRefreshExample/Classes/Second/MJCollectionViewController.h
  38. 7 7
      MJRefreshExample/Classes/Second/MJCollectionViewController.m
  39. 0 0
      MJRefreshExample/Classes/Second/MJTableViewController.h
  40. 30 30
      MJRefreshExample/Classes/Second/MJTableViewController.m
  41. 0 0
      MJRefreshExample/Classes/Second/MJTestViewController.h
  42. 0 0
      MJRefreshExample/Classes/Second/MJTestViewController.m
  43. 0 0
      MJRefreshExample/Classes/Second/MJTestViewController.xib
  44. 0 0
      MJRefreshExample/Classes/Second/MJWebViewViewController.h
  45. 2 2
      MJRefreshExample/Classes/Second/MJWebViewViewController.m
  46. 6 2
      MJRefreshExample/Classes/Second/MJWebViewViewController.xib
  47. 0 0
      MJRefreshExample/Images.xcassets/AppIcon.appiconset/AppIcon@2x.png
  48. 0 0
      MJRefreshExample/Images.xcassets/AppIcon.appiconset/Contents.json
  49. 0 0
      MJRefreshExample/Images.xcassets/Contents.json
  50. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0001.imageset/Contents.json
  51. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0001.imageset/dropdown_anim__0001@2x.png
  52. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00010.imageset/Contents.json
  53. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00010.imageset/dropdown_anim__00010@2x.png
  54. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00011.imageset/Contents.json
  55. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00011.imageset/dropdown_anim__00011@2x.png
  56. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00012.imageset/Contents.json
  57. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00012.imageset/dropdown_anim__00012@2x.png
  58. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00013.imageset/Contents.json
  59. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00013.imageset/dropdown_anim__00013@2x.png
  60. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00014.imageset/Contents.json
  61. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00014.imageset/dropdown_anim__00014@2x.png
  62. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00015.imageset/Contents.json
  63. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00015.imageset/dropdown_anim__00015@2x.png
  64. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00016.imageset/Contents.json
  65. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00016.imageset/dropdown_anim__00016@2x.png
  66. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00017.imageset/Contents.json
  67. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00017.imageset/dropdown_anim__00017@2x.png
  68. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00018.imageset/Contents.json
  69. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00018.imageset/dropdown_anim__00018@2x.png
  70. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00019.imageset/Contents.json
  71. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00019.imageset/dropdown_anim__00019@2x.png
  72. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0002.imageset/Contents.json
  73. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0002.imageset/dropdown_anim__0002@2x.png
  74. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00020.imageset/Contents.json
  75. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00020.imageset/dropdown_anim__00020@2x.png
  76. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00021.imageset/Contents.json
  77. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00021.imageset/dropdown_anim__00021@2x.png
  78. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00022.imageset/Contents.json
  79. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00022.imageset/dropdown_anim__00022@2x.png
  80. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00023.imageset/Contents.json
  81. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00023.imageset/dropdown_anim__00023@2x.png
  82. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00024.imageset/Contents.json
  83. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00024.imageset/dropdown_anim__00024@2x.png
  84. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00025.imageset/Contents.json
  85. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00025.imageset/dropdown_anim__00025@2x.png
  86. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00026.imageset/Contents.json
  87. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00026.imageset/dropdown_anim__00026@2x.png
  88. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00027.imageset/Contents.json
  89. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00027.imageset/dropdown_anim__00027@2x.png
  90. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00028.imageset/Contents.json
  91. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00028.imageset/dropdown_anim__00028@2x.png
  92. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00029.imageset/Contents.json
  93. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00029.imageset/dropdown_anim__00029@2x.png
  94. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0003.imageset/Contents.json
  95. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0003.imageset/dropdown_anim__0003@2x.png
  96. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00030.imageset/Contents.json
  97. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00030.imageset/dropdown_anim__00030@2x.png
  98. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00031.imageset/Contents.json
  99. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00031.imageset/dropdown_anim__00031@2x.png
  100. 0 0
      MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00032.imageset/Contents.json

+ 1 - 1
MJRefresh.podspec

@@ -1,6 +1,6 @@
 Pod::Spec.new do |s|
     s.name         = 'MJRefresh'
-    s.version      = '2.4.12'
+    s.version      = '2.5.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

@@ -100,12 +100,12 @@
         
         CGFloat deltaH = [self heightForContentBreakView];
         // 刚刷新完毕
-        if (MJRefreshStateRefreshing == oldState && deltaH > 0 && self.scrollView.totalDataCount != self.lastRefreshCount) {
+        if (MJRefreshStateRefreshing == oldState && deltaH > 0 && self.scrollView.mj_totalDataCount != self.lastRefreshCount) {
             self.scrollView.mj_offsetY = self.scrollView.mj_offsetY;
         }
     } else if (state == MJRefreshStateRefreshing) {
         // 记录刷新前的数量
-        self.lastRefreshCount = self.scrollView.totalDataCount;
+        self.lastRefreshCount = self.scrollView.mj_totalDataCount;
         
         [UIView animateWithDuration:MJRefreshFastAnimationDuration animations:^{
             CGFloat bottom = self.mj_h + self.scrollViewOriginalInset.bottom;

+ 1 - 1
MJRefresh/Base/MJRefreshFooter.m

@@ -47,7 +47,7 @@
     if (newSuperview) {
         // 监听scrollView数据的变化
         if ([self.scrollView isKindOfClass:[UITableView class]] || [self.scrollView isKindOfClass:[UICollectionView class]]) {
-            [self.scrollView setReloadDataBlock:^(NSInteger totalDataCount) {
+            [self.scrollView setMj_reloadDataBlock:^(NSInteger totalDataCount) {
                 if (self.isAutomaticallyHidden) {
                     self.hidden = (totalDataCount == 0);
                 }

+ 7 - 4
MJRefresh/UIScrollView+MJRefresh.h

@@ -8,16 +8,19 @@
 //  给ScrollView增加下拉刷新、上拉刷新的功能
 
 #import <UIKit/UIKit.h>
+#import "MJRefreshConst.h"
 
 @class MJRefreshHeader, MJRefreshFooter;
 
 @interface UIScrollView (MJRefresh)
 /** 下拉刷新控件 */
-@property (strong, nonatomic) MJRefreshHeader *header;
+@property (strong, nonatomic) MJRefreshHeader *mj_header;
+@property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header");
 /** 上拉刷新控件 */
-@property (strong, nonatomic) MJRefreshFooter *footer;
+@property (strong, nonatomic) MJRefreshFooter *mj_footer;
+@property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer");
 
 #pragma mark - other
-- (NSInteger)totalDataCount;
-@property (copy, nonatomic) void (^reloadDataBlock)(NSInteger totalDataCount);
+- (NSInteger)mj_totalDataCount;
+@property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount);
 @end

+ 44 - 23
MJRefresh/UIScrollView+MJRefresh.m

@@ -30,50 +30,71 @@
 
 #pragma mark - header
 static const char MJRefreshHeaderKey = '\0';
-- (void)setHeader:(MJRefreshHeader *)header
+- (void)setMj_header:(MJRefreshHeader *)mj_header
 {
-    if (header != self.header) {
+    if (mj_header != self.mj_header) {
         // 删除旧的,添加新的
-        [self.header removeFromSuperview];
-        [self addSubview:header];
+        [self.mj_header removeFromSuperview];
+        [self addSubview:mj_header];
         
         // 存储新的
-        [self willChangeValueForKey:@"header"]; // KVO
+        [self willChangeValueForKey:@"mj_header"]; // KVO
         objc_setAssociatedObject(self, &MJRefreshHeaderKey,
-                                 header, OBJC_ASSOCIATION_ASSIGN);
-        [self didChangeValueForKey:@"header"]; // KVO
+                                 mj_header, OBJC_ASSOCIATION_ASSIGN);
+        [self didChangeValueForKey:@"mj_header"]; // KVO
     }
 }
 
-- (MJRefreshHeader *)header
+- (MJRefreshHeader *)mj_header
 {
     return objc_getAssociatedObject(self, &MJRefreshHeaderKey);
 }
 
 #pragma mark - footer
 static const char MJRefreshFooterKey = '\0';
-- (void)setFooter:(MJRefreshFooter *)footer
+- (void)setMj_footer:(MJRefreshFooter *)mj_footer
 {
-    if (footer != self.footer) {
+    if (mj_footer != self.mj_footer) {
         // 删除旧的,添加新的
-        [self.footer removeFromSuperview];
-        [self addSubview:footer];
+        [self.mj_footer removeFromSuperview];
+        [self addSubview:mj_footer];
         
         // 存储新的
-        [self willChangeValueForKey:@"footer"]; // KVO
+        [self willChangeValueForKey:@"mj_footer"]; // KVO
         objc_setAssociatedObject(self, &MJRefreshFooterKey,
-                                 footer, OBJC_ASSOCIATION_ASSIGN);
-        [self didChangeValueForKey:@"footer"]; // KVO
+                                 mj_footer, OBJC_ASSOCIATION_ASSIGN);
+        [self didChangeValueForKey:@"mj_footer"]; // KVO
     }
 }
 
-- (MJRefreshFooter *)footer
+- (MJRefreshFooter *)mj_footer
 {
     return objc_getAssociatedObject(self, &MJRefreshFooterKey);
 }
 
+#pragma mark - 过期
+- (void)setFooter:(MJRefreshFooter *)footer
+{
+    self.mj_footer = footer;
+}
+
+- (MJRefreshFooter *)footer
+{
+    return self.mj_footer;
+}
+
+- (void)setHeader:(MJRefreshHeader *)header
+{
+    self.mj_header = header;
+}
+
+- (MJRefreshHeader *)header
+{
+    return self.mj_header;
+}
+
 #pragma mark - other
-- (NSInteger)totalDataCount
+- (NSInteger)mj_totalDataCount
 {
     NSInteger totalCount = 0;
     if ([self isKindOfClass:[UITableView class]]) {
@@ -93,21 +114,21 @@ static const char MJRefreshFooterKey = '\0';
 }
 
 static const char MJRefreshReloadDataBlockKey = '\0';
-- (void)setReloadDataBlock:(void (^)(NSInteger))reloadDataBlock
+- (void)setMj_reloadDataBlock:(void (^)(NSInteger))mj_reloadDataBlock
 {
-    [self willChangeValueForKey:@"reloadDataBlock"]; // KVO
-    objc_setAssociatedObject(self, &MJRefreshReloadDataBlockKey, reloadDataBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);
-    [self didChangeValueForKey:@"reloadDataBlock"]; // KVO
+    [self willChangeValueForKey:@"mj_reloadDataBlock"]; // KVO
+    objc_setAssociatedObject(self, &MJRefreshReloadDataBlockKey, mj_reloadDataBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);
+    [self didChangeValueForKey:@"mj_reloadDataBlock"]; // KVO
 }
 
-- (void (^)(NSInteger))reloadDataBlock
+- (void (^)(NSInteger))mj_reloadDataBlock
 {
     return objc_getAssociatedObject(self, &MJRefreshReloadDataBlockKey);
 }
 
 - (void)executeReloadDataBlock
 {
-    !self.reloadDataBlock ? : self.reloadDataBlock(self.totalDataCount);
+    !self.mj_reloadDataBlock ? : self.mj_reloadDataBlock(self.mj_totalDataCount);
 }
 @end
 

+ 166 - 167
MJRefreshExample/MJRefreshExample.xcodeproj/project.pbxproj → MJRefreshExample.xcodeproj/project.pbxproj

@@ -7,25 +7,6 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		2D7780EC1B2C1DE4009EF21B /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780C51B2C1DE4009EF21B /* MJRefreshAutoGifFooter.m */; };
-		2D7780ED1B2C1DE4009EF21B /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780C71B2C1DE4009EF21B /* MJRefreshAutoNormalFooter.m */; };
-		2D7780EE1B2C1DE4009EF21B /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780C91B2C1DE4009EF21B /* MJRefreshAutoStateFooter.m */; };
-		2D7780EF1B2C1DE4009EF21B /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780CC1B2C1DE4009EF21B /* MJRefreshBackGifFooter.m */; };
-		2D7780F01B2C1DE4009EF21B /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780CE1B2C1DE4009EF21B /* MJRefreshBackNormalFooter.m */; };
-		2D7780F11B2C1DE4009EF21B /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780D01B2C1DE4009EF21B /* MJRefreshBackStateFooter.m */; };
-		2D7780F21B2C1DE4009EF21B /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780D31B2C1DE4009EF21B /* MJRefreshGifHeader.m */; };
-		2D7780F31B2C1DE4009EF21B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780D51B2C1DE4009EF21B /* MJRefreshNormalHeader.m */; };
-		2D7780F41B2C1DE4009EF21B /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780D71B2C1DE4009EF21B /* MJRefreshStateHeader.m */; };
-		2D7780F51B2C1DE4009EF21B /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2D7780D81B2C1DE4009EF21B /* MJRefresh.bundle */; };
-		2D7780F91B2C1DE4009EF21B /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780E11B2C1DE4009EF21B /* MJRefreshConst.m */; };
-		2D7780FC1B2C1DE4009EF21B /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780E71B2C1DE4009EF21B /* UIScrollView+MJExtension.m */; };
-		2D7780FD1B2C1DE4009EF21B /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780E91B2C1DE4009EF21B /* UIScrollView+MJRefresh.m */; };
-		2D7780FE1B2C1DE4009EF21B /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7780EB1B2C1DE4009EF21B /* UIView+MJExtension.m */; };
-		2D77810A1B2C1E19009EF21B /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7781011B2C1E19009EF21B /* MJRefreshAutoFooter.m */; };
-		2D77810B1B2C1E19009EF21B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7781031B2C1E19009EF21B /* MJRefreshBackFooter.m */; };
-		2D77810C1B2C1E19009EF21B /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7781051B2C1E19009EF21B /* MJRefreshComponent.m */; };
-		2D77810D1B2C1E19009EF21B /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7781071B2C1E19009EF21B /* MJRefreshFooter.m */; };
-		2D77810E1B2C1E19009EF21B /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7781091B2C1E19009EF21B /* MJRefreshHeader.m */; };
 		2D9BEB091BB15F4A00AED473 /* UIViewController+Example.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D9BEAE01BB15F4A00AED473 /* UIViewController+Example.m */; settings = {ASSET_TAGS = (); }; };
 		2D9BEB0A1BB15F4A00AED473 /* MJChiBaoZiFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D9BEAE31BB15F4A00AED473 /* MJChiBaoZiFooter.m */; settings = {ASSET_TAGS = (); }; };
 		2D9BEB0B1BB15F4A00AED473 /* MJChiBaoZiFooter2.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D9BEAE51BB15F4A00AED473 /* MJChiBaoZiFooter2.m */; settings = {ASSET_TAGS = (); }; };
@@ -51,6 +32,25 @@
 		2DA7F9361AA6B4C4005627AB /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2DA7F9351AA6B4C4005627AB /* Images.xcassets */; };
 		2DA7F9391AA6B4C4005627AB /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2DA7F9371AA6B4C4005627AB /* LaunchScreen.xib */; };
 		2DA7F9451AA6B4C4005627AB /* MJRefreshExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7F9441AA6B4C4005627AB /* MJRefreshExampleTests.m */; };
+		2DB2EA171BECBE6700D58F6A /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2E9ED1BECBE6700D58F6A /* MJRefreshAutoFooter.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA181BECBE6700D58F6A /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2E9EF1BECBE6700D58F6A /* MJRefreshBackFooter.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA191BECBE6700D58F6A /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2E9F11BECBE6700D58F6A /* MJRefreshComponent.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA1A1BECBE6700D58F6A /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2E9F31BECBE6700D58F6A /* MJRefreshFooter.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA1B1BECBE6700D58F6A /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2E9F51BECBE6700D58F6A /* MJRefreshHeader.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA1C1BECBE6700D58F6A /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2E9FA1BECBE6700D58F6A /* MJRefreshAutoGifFooter.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA1D1BECBE6700D58F6A /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2E9FC1BECBE6700D58F6A /* MJRefreshAutoNormalFooter.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA1E1BECBE6700D58F6A /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2E9FE1BECBE6700D58F6A /* MJRefreshAutoStateFooter.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA1F1BECBE6700D58F6A /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA011BECBE6700D58F6A /* MJRefreshBackGifFooter.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA201BECBE6700D58F6A /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA031BECBE6700D58F6A /* MJRefreshBackNormalFooter.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA211BECBE6700D58F6A /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA051BECBE6700D58F6A /* MJRefreshBackStateFooter.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA221BECBE6700D58F6A /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA081BECBE6700D58F6A /* MJRefreshGifHeader.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA231BECBE6700D58F6A /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA0A1BECBE6700D58F6A /* MJRefreshNormalHeader.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA241BECBE6700D58F6A /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA0C1BECBE6700D58F6A /* MJRefreshStateHeader.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA251BECBE6700D58F6A /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2DB2EA0D1BECBE6700D58F6A /* MJRefresh.bundle */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA261BECBE6700D58F6A /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA101BECBE6700D58F6A /* MJRefreshConst.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA271BECBE6700D58F6A /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA121BECBE6700D58F6A /* UIScrollView+MJExtension.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA281BECBE6700D58F6A /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA141BECBE6700D58F6A /* UIScrollView+MJRefresh.m */; settings = {ASSET_TAGS = (); }; };
+		2DB2EA291BECBE6700D58F6A /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2EA161BECBE6700D58F6A /* UIView+MJExtension.m */; settings = {ASSET_TAGS = (); }; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -64,44 +64,6 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
-		2D7780C41B2C1DE4009EF21B /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoGifFooter.h; sourceTree = "<group>"; };
-		2D7780C51B2C1DE4009EF21B /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoGifFooter.m; sourceTree = "<group>"; };
-		2D7780C61B2C1DE4009EF21B /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoNormalFooter.h; sourceTree = "<group>"; };
-		2D7780C71B2C1DE4009EF21B /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoNormalFooter.m; sourceTree = "<group>"; };
-		2D7780C81B2C1DE4009EF21B /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoStateFooter.h; sourceTree = "<group>"; };
-		2D7780C91B2C1DE4009EF21B /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoStateFooter.m; sourceTree = "<group>"; };
-		2D7780CB1B2C1DE4009EF21B /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackGifFooter.h; sourceTree = "<group>"; };
-		2D7780CC1B2C1DE4009EF21B /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshBackGifFooter.m; sourceTree = "<group>"; };
-		2D7780CD1B2C1DE4009EF21B /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackNormalFooter.h; sourceTree = "<group>"; };
-		2D7780CE1B2C1DE4009EF21B /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshBackNormalFooter.m; sourceTree = "<group>"; };
-		2D7780CF1B2C1DE4009EF21B /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackStateFooter.h; sourceTree = "<group>"; };
-		2D7780D01B2C1DE4009EF21B /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshBackStateFooter.m; sourceTree = "<group>"; };
-		2D7780D21B2C1DE4009EF21B /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshGifHeader.h; sourceTree = "<group>"; };
-		2D7780D31B2C1DE4009EF21B /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshGifHeader.m; sourceTree = "<group>"; };
-		2D7780D41B2C1DE4009EF21B /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshNormalHeader.h; sourceTree = "<group>"; };
-		2D7780D51B2C1DE4009EF21B /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshNormalHeader.m; sourceTree = "<group>"; };
-		2D7780D61B2C1DE4009EF21B /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshStateHeader.h; sourceTree = "<group>"; };
-		2D7780D71B2C1DE4009EF21B /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshStateHeader.m; sourceTree = "<group>"; };
-		2D7780D81B2C1DE4009EF21B /* MJRefresh.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = MJRefresh.bundle; sourceTree = "<group>"; };
-		2D7780D91B2C1DE4009EF21B /* MJRefresh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefresh.h; sourceTree = "<group>"; };
-		2D7780E01B2C1DE4009EF21B /* MJRefreshConst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshConst.h; sourceTree = "<group>"; };
-		2D7780E11B2C1DE4009EF21B /* MJRefreshConst.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshConst.m; sourceTree = "<group>"; };
-		2D7780E61B2C1DE4009EF21B /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+MJExtension.h"; sourceTree = "<group>"; };
-		2D7780E71B2C1DE4009EF21B /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+MJExtension.m"; sourceTree = "<group>"; };
-		2D7780E81B2C1DE4009EF21B /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+MJRefresh.h"; sourceTree = "<group>"; };
-		2D7780E91B2C1DE4009EF21B /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+MJRefresh.m"; sourceTree = "<group>"; };
-		2D7780EA1B2C1DE4009EF21B /* UIView+MJExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+MJExtension.h"; sourceTree = "<group>"; };
-		2D7780EB1B2C1DE4009EF21B /* UIView+MJExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+MJExtension.m"; sourceTree = "<group>"; };
-		2D7781001B2C1E19009EF21B /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoFooter.h; sourceTree = "<group>"; };
-		2D7781011B2C1E19009EF21B /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoFooter.m; sourceTree = "<group>"; };
-		2D7781021B2C1E19009EF21B /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackFooter.h; sourceTree = "<group>"; };
-		2D7781031B2C1E19009EF21B /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshBackFooter.m; sourceTree = "<group>"; };
-		2D7781041B2C1E19009EF21B /* MJRefreshComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshComponent.h; sourceTree = "<group>"; };
-		2D7781051B2C1E19009EF21B /* MJRefreshComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshComponent.m; sourceTree = "<group>"; };
-		2D7781061B2C1E19009EF21B /* MJRefreshFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshFooter.h; sourceTree = "<group>"; };
-		2D7781071B2C1E19009EF21B /* MJRefreshFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshFooter.m; sourceTree = "<group>"; };
-		2D7781081B2C1E19009EF21B /* MJRefreshHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshHeader.h; sourceTree = "<group>"; };
-		2D7781091B2C1E19009EF21B /* MJRefreshHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshHeader.m; sourceTree = "<group>"; };
 		2D9BEADF1BB15F4A00AED473 /* UIViewController+Example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+Example.h"; sourceTree = "<group>"; };
 		2D9BEAE01BB15F4A00AED473 /* UIViewController+Example.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+Example.m"; sourceTree = "<group>"; };
 		2D9BEAE21BB15F4A00AED473 /* MJChiBaoZiFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJChiBaoZiFooter.h; sourceTree = "<group>"; };
@@ -150,6 +112,44 @@
 		2DA7F9431AA6B4C4005627AB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		2DA7F9441AA6B4C4005627AB /* MJRefreshExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MJRefreshExampleTests.m; sourceTree = "<group>"; };
 		2DAA837B1BB1685300B62152 /* PrefixHeader.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrefixHeader.pch; sourceTree = "<group>"; };
+		2DB2E9EC1BECBE6700D58F6A /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoFooter.h; sourceTree = "<group>"; };
+		2DB2E9ED1BECBE6700D58F6A /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoFooter.m; sourceTree = "<group>"; };
+		2DB2E9EE1BECBE6700D58F6A /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackFooter.h; sourceTree = "<group>"; };
+		2DB2E9EF1BECBE6700D58F6A /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshBackFooter.m; sourceTree = "<group>"; };
+		2DB2E9F01BECBE6700D58F6A /* MJRefreshComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshComponent.h; sourceTree = "<group>"; };
+		2DB2E9F11BECBE6700D58F6A /* MJRefreshComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshComponent.m; sourceTree = "<group>"; };
+		2DB2E9F21BECBE6700D58F6A /* MJRefreshFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshFooter.h; sourceTree = "<group>"; };
+		2DB2E9F31BECBE6700D58F6A /* MJRefreshFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshFooter.m; sourceTree = "<group>"; };
+		2DB2E9F41BECBE6700D58F6A /* MJRefreshHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshHeader.h; sourceTree = "<group>"; };
+		2DB2E9F51BECBE6700D58F6A /* MJRefreshHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshHeader.m; sourceTree = "<group>"; };
+		2DB2E9F91BECBE6700D58F6A /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoGifFooter.h; sourceTree = "<group>"; };
+		2DB2E9FA1BECBE6700D58F6A /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoGifFooter.m; sourceTree = "<group>"; };
+		2DB2E9FB1BECBE6700D58F6A /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoNormalFooter.h; sourceTree = "<group>"; };
+		2DB2E9FC1BECBE6700D58F6A /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoNormalFooter.m; sourceTree = "<group>"; };
+		2DB2E9FD1BECBE6700D58F6A /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoStateFooter.h; sourceTree = "<group>"; };
+		2DB2E9FE1BECBE6700D58F6A /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoStateFooter.m; sourceTree = "<group>"; };
+		2DB2EA001BECBE6700D58F6A /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackGifFooter.h; sourceTree = "<group>"; };
+		2DB2EA011BECBE6700D58F6A /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshBackGifFooter.m; sourceTree = "<group>"; };
+		2DB2EA021BECBE6700D58F6A /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackNormalFooter.h; sourceTree = "<group>"; };
+		2DB2EA031BECBE6700D58F6A /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshBackNormalFooter.m; sourceTree = "<group>"; };
+		2DB2EA041BECBE6700D58F6A /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackStateFooter.h; sourceTree = "<group>"; };
+		2DB2EA051BECBE6700D58F6A /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshBackStateFooter.m; sourceTree = "<group>"; };
+		2DB2EA071BECBE6700D58F6A /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshGifHeader.h; sourceTree = "<group>"; };
+		2DB2EA081BECBE6700D58F6A /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshGifHeader.m; sourceTree = "<group>"; };
+		2DB2EA091BECBE6700D58F6A /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshNormalHeader.h; sourceTree = "<group>"; };
+		2DB2EA0A1BECBE6700D58F6A /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshNormalHeader.m; sourceTree = "<group>"; };
+		2DB2EA0B1BECBE6700D58F6A /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshStateHeader.h; sourceTree = "<group>"; };
+		2DB2EA0C1BECBE6700D58F6A /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshStateHeader.m; sourceTree = "<group>"; };
+		2DB2EA0D1BECBE6700D58F6A /* MJRefresh.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = MJRefresh.bundle; sourceTree = "<group>"; };
+		2DB2EA0E1BECBE6700D58F6A /* MJRefresh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefresh.h; sourceTree = "<group>"; };
+		2DB2EA0F1BECBE6700D58F6A /* MJRefreshConst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshConst.h; sourceTree = "<group>"; };
+		2DB2EA101BECBE6700D58F6A /* MJRefreshConst.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshConst.m; sourceTree = "<group>"; };
+		2DB2EA111BECBE6700D58F6A /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+MJExtension.h"; sourceTree = "<group>"; };
+		2DB2EA121BECBE6700D58F6A /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+MJExtension.m"; sourceTree = "<group>"; };
+		2DB2EA131BECBE6700D58F6A /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+MJRefresh.h"; sourceTree = "<group>"; };
+		2DB2EA141BECBE6700D58F6A /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+MJRefresh.m"; sourceTree = "<group>"; };
+		2DB2EA151BECBE6700D58F6A /* UIView+MJExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+MJExtension.h"; sourceTree = "<group>"; };
+		2DB2EA161BECBE6700D58F6A /* UIView+MJExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+MJExtension.m"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -170,80 +170,6 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
-		2D7780C11B2C1DE4009EF21B /* Custom */ = {
-			isa = PBXGroup;
-			children = (
-				2D7780C21B2C1DE4009EF21B /* Footer */,
-				2D7780D11B2C1DE4009EF21B /* Header */,
-			);
-			path = Custom;
-			sourceTree = "<group>";
-		};
-		2D7780C21B2C1DE4009EF21B /* Footer */ = {
-			isa = PBXGroup;
-			children = (
-				2D7780C31B2C1DE4009EF21B /* Auto */,
-				2D7780CA1B2C1DE4009EF21B /* Back */,
-			);
-			path = Footer;
-			sourceTree = "<group>";
-		};
-		2D7780C31B2C1DE4009EF21B /* Auto */ = {
-			isa = PBXGroup;
-			children = (
-				2D7780C41B2C1DE4009EF21B /* MJRefreshAutoGifFooter.h */,
-				2D7780C51B2C1DE4009EF21B /* MJRefreshAutoGifFooter.m */,
-				2D7780C61B2C1DE4009EF21B /* MJRefreshAutoNormalFooter.h */,
-				2D7780C71B2C1DE4009EF21B /* MJRefreshAutoNormalFooter.m */,
-				2D7780C81B2C1DE4009EF21B /* MJRefreshAutoStateFooter.h */,
-				2D7780C91B2C1DE4009EF21B /* MJRefreshAutoStateFooter.m */,
-			);
-			path = Auto;
-			sourceTree = "<group>";
-		};
-		2D7780CA1B2C1DE4009EF21B /* Back */ = {
-			isa = PBXGroup;
-			children = (
-				2D7780CB1B2C1DE4009EF21B /* MJRefreshBackGifFooter.h */,
-				2D7780CC1B2C1DE4009EF21B /* MJRefreshBackGifFooter.m */,
-				2D7780CD1B2C1DE4009EF21B /* MJRefreshBackNormalFooter.h */,
-				2D7780CE1B2C1DE4009EF21B /* MJRefreshBackNormalFooter.m */,
-				2D7780CF1B2C1DE4009EF21B /* MJRefreshBackStateFooter.h */,
-				2D7780D01B2C1DE4009EF21B /* MJRefreshBackStateFooter.m */,
-			);
-			path = Back;
-			sourceTree = "<group>";
-		};
-		2D7780D11B2C1DE4009EF21B /* Header */ = {
-			isa = PBXGroup;
-			children = (
-				2D7780D21B2C1DE4009EF21B /* MJRefreshGifHeader.h */,
-				2D7780D31B2C1DE4009EF21B /* MJRefreshGifHeader.m */,
-				2D7780D41B2C1DE4009EF21B /* MJRefreshNormalHeader.h */,
-				2D7780D51B2C1DE4009EF21B /* MJRefreshNormalHeader.m */,
-				2D7780D61B2C1DE4009EF21B /* MJRefreshStateHeader.h */,
-				2D7780D71B2C1DE4009EF21B /* MJRefreshStateHeader.m */,
-			);
-			path = Header;
-			sourceTree = "<group>";
-		};
-		2D7780FF1B2C1E19009EF21B /* Base */ = {
-			isa = PBXGroup;
-			children = (
-				2D7781041B2C1E19009EF21B /* MJRefreshComponent.h */,
-				2D7781051B2C1E19009EF21B /* MJRefreshComponent.m */,
-				2D7781081B2C1E19009EF21B /* MJRefreshHeader.h */,
-				2D7781091B2C1E19009EF21B /* MJRefreshHeader.m */,
-				2D7781061B2C1E19009EF21B /* MJRefreshFooter.h */,
-				2D7781071B2C1E19009EF21B /* MJRefreshFooter.m */,
-				2D7781001B2C1E19009EF21B /* MJRefreshAutoFooter.h */,
-				2D7781011B2C1E19009EF21B /* MJRefreshAutoFooter.m */,
-				2D7781021B2C1E19009EF21B /* MJRefreshBackFooter.h */,
-				2D7781031B2C1E19009EF21B /* MJRefreshBackFooter.m */,
-			);
-			path = Base;
-			sourceTree = "<group>";
-		};
 		2D9BEADE1BB15F4A00AED473 /* Category */ = {
 			isa = PBXGroup;
 			children = (
@@ -338,7 +264,7 @@
 		2DA7F9271AA6B4C4005627AB /* MJRefreshExample */ = {
 			isa = PBXGroup;
 			children = (
-				2DD2E5231B2AEC9B0006F85E /* MJRefresh */,
+				2DB2E9EA1BECBE6700D58F6A /* MJRefresh */,
 				2DA7F94E1AA6B51C005627AB /* Classes */,
 				2DA7F9281AA6B4C4005627AB /* Supporting Files */,
 			);
@@ -387,24 +313,97 @@
 			path = Classes;
 			sourceTree = "<group>";
 		};
-		2DD2E5231B2AEC9B0006F85E /* MJRefresh */ = {
+		2DB2E9EA1BECBE6700D58F6A /* MJRefresh */ = {
+			isa = PBXGroup;
+			children = (
+				2DB2E9EB1BECBE6700D58F6A /* Base */,
+				2DB2E9F61BECBE6700D58F6A /* Custom */,
+				2DB2EA0D1BECBE6700D58F6A /* MJRefresh.bundle */,
+				2DB2EA0E1BECBE6700D58F6A /* MJRefresh.h */,
+				2DB2EA0F1BECBE6700D58F6A /* MJRefreshConst.h */,
+				2DB2EA101BECBE6700D58F6A /* MJRefreshConst.m */,
+				2DB2EA111BECBE6700D58F6A /* UIScrollView+MJExtension.h */,
+				2DB2EA121BECBE6700D58F6A /* UIScrollView+MJExtension.m */,
+				2DB2EA131BECBE6700D58F6A /* UIScrollView+MJRefresh.h */,
+				2DB2EA141BECBE6700D58F6A /* UIScrollView+MJRefresh.m */,
+				2DB2EA151BECBE6700D58F6A /* UIView+MJExtension.h */,
+				2DB2EA161BECBE6700D58F6A /* UIView+MJExtension.m */,
+			);
+			path = MJRefresh;
+			sourceTree = SOURCE_ROOT;
+		};
+		2DB2E9EB1BECBE6700D58F6A /* Base */ = {
+			isa = PBXGroup;
+			children = (
+				2DB2E9EC1BECBE6700D58F6A /* MJRefreshAutoFooter.h */,
+				2DB2E9ED1BECBE6700D58F6A /* MJRefreshAutoFooter.m */,
+				2DB2E9EE1BECBE6700D58F6A /* MJRefreshBackFooter.h */,
+				2DB2E9EF1BECBE6700D58F6A /* MJRefreshBackFooter.m */,
+				2DB2E9F01BECBE6700D58F6A /* MJRefreshComponent.h */,
+				2DB2E9F11BECBE6700D58F6A /* MJRefreshComponent.m */,
+				2DB2E9F21BECBE6700D58F6A /* MJRefreshFooter.h */,
+				2DB2E9F31BECBE6700D58F6A /* MJRefreshFooter.m */,
+				2DB2E9F41BECBE6700D58F6A /* MJRefreshHeader.h */,
+				2DB2E9F51BECBE6700D58F6A /* MJRefreshHeader.m */,
+			);
+			path = Base;
+			sourceTree = "<group>";
+		};
+		2DB2E9F61BECBE6700D58F6A /* Custom */ = {
 			isa = PBXGroup;
 			children = (
-				2D7780FF1B2C1E19009EF21B /* Base */,
-				2D7780C11B2C1DE4009EF21B /* Custom */,
-				2D7780D81B2C1DE4009EF21B /* MJRefresh.bundle */,
-				2D7780D91B2C1DE4009EF21B /* MJRefresh.h */,
-				2D7780E01B2C1DE4009EF21B /* MJRefreshConst.h */,
-				2D7780E11B2C1DE4009EF21B /* MJRefreshConst.m */,
-				2D7780E61B2C1DE4009EF21B /* UIScrollView+MJExtension.h */,
-				2D7780E71B2C1DE4009EF21B /* UIScrollView+MJExtension.m */,
-				2D7780E81B2C1DE4009EF21B /* UIScrollView+MJRefresh.h */,
-				2D7780E91B2C1DE4009EF21B /* UIScrollView+MJRefresh.m */,
-				2D7780EA1B2C1DE4009EF21B /* UIView+MJExtension.h */,
-				2D7780EB1B2C1DE4009EF21B /* UIView+MJExtension.m */,
-			);
-			name = MJRefresh;
-			path = ../../MJRefresh;
+				2DB2E9F71BECBE6700D58F6A /* Footer */,
+				2DB2EA061BECBE6700D58F6A /* Header */,
+			);
+			path = Custom;
+			sourceTree = "<group>";
+		};
+		2DB2E9F71BECBE6700D58F6A /* Footer */ = {
+			isa = PBXGroup;
+			children = (
+				2DB2E9F81BECBE6700D58F6A /* Auto */,
+				2DB2E9FF1BECBE6700D58F6A /* Back */,
+			);
+			path = Footer;
+			sourceTree = "<group>";
+		};
+		2DB2E9F81BECBE6700D58F6A /* Auto */ = {
+			isa = PBXGroup;
+			children = (
+				2DB2E9F91BECBE6700D58F6A /* MJRefreshAutoGifFooter.h */,
+				2DB2E9FA1BECBE6700D58F6A /* MJRefreshAutoGifFooter.m */,
+				2DB2E9FB1BECBE6700D58F6A /* MJRefreshAutoNormalFooter.h */,
+				2DB2E9FC1BECBE6700D58F6A /* MJRefreshAutoNormalFooter.m */,
+				2DB2E9FD1BECBE6700D58F6A /* MJRefreshAutoStateFooter.h */,
+				2DB2E9FE1BECBE6700D58F6A /* MJRefreshAutoStateFooter.m */,
+			);
+			path = Auto;
+			sourceTree = "<group>";
+		};
+		2DB2E9FF1BECBE6700D58F6A /* Back */ = {
+			isa = PBXGroup;
+			children = (
+				2DB2EA001BECBE6700D58F6A /* MJRefreshBackGifFooter.h */,
+				2DB2EA011BECBE6700D58F6A /* MJRefreshBackGifFooter.m */,
+				2DB2EA021BECBE6700D58F6A /* MJRefreshBackNormalFooter.h */,
+				2DB2EA031BECBE6700D58F6A /* MJRefreshBackNormalFooter.m */,
+				2DB2EA041BECBE6700D58F6A /* MJRefreshBackStateFooter.h */,
+				2DB2EA051BECBE6700D58F6A /* MJRefreshBackStateFooter.m */,
+			);
+			path = Back;
+			sourceTree = "<group>";
+		};
+		2DB2EA061BECBE6700D58F6A /* Header */ = {
+			isa = PBXGroup;
+			children = (
+				2DB2EA071BECBE6700D58F6A /* MJRefreshGifHeader.h */,
+				2DB2EA081BECBE6700D58F6A /* MJRefreshGifHeader.m */,
+				2DB2EA091BECBE6700D58F6A /* MJRefreshNormalHeader.h */,
+				2DB2EA0A1BECBE6700D58F6A /* MJRefreshNormalHeader.m */,
+				2DB2EA0B1BECBE6700D58F6A /* MJRefreshStateHeader.h */,
+				2DB2EA0C1BECBE6700D58F6A /* MJRefreshStateHeader.m */,
+			);
+			path = Header;
 			sourceTree = "<group>";
 		};
 /* End PBXGroup section */
@@ -490,7 +489,7 @@
 			files = (
 				2DA7F9341AA6B4C4005627AB /* Main.storyboard in Resources */,
 				2D9BEB1C1BB15F4A00AED473 /* MJWebViewViewController.xib in Resources */,
-				2D7780F51B2C1DE4009EF21B /* MJRefresh.bundle in Resources */,
+				2DB2EA251BECBE6700D58F6A /* MJRefresh.bundle in Resources */,
 				2DA7F9391AA6B4C4005627AB /* LaunchScreen.xib in Resources */,
 				2D9BEB1A1BB15F4A00AED473 /* MJTestViewController.xib in Resources */,
 				2DA7F9361AA6B4C4005627AB /* Images.xcassets in Resources */,
@@ -511,42 +510,42 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				2D77810C1B2C1E19009EF21B /* MJRefreshComponent.m in Sources */,
-				2D7780F91B2C1DE4009EF21B /* MJRefreshConst.m in Sources */,
+				2DB2EA181BECBE6700D58F6A /* MJRefreshBackFooter.m in Sources */,
+				2DB2EA1A1BECBE6700D58F6A /* MJRefreshFooter.m in Sources */,
 				2D9BEB0F1BB15F4A00AED473 /* MJDIYHeader.m in Sources */,
-				2D7780EF1B2C1DE4009EF21B /* MJRefreshBackGifFooter.m in Sources */,
-				2D77810B1B2C1E19009EF21B /* MJRefreshBackFooter.m in Sources */,
 				2D9BEB181BB15F4A00AED473 /* MJTableViewController.m in Sources */,
+				2DB2EA261BECBE6700D58F6A /* MJRefreshConst.m in Sources */,
 				2D9BEB0A1BB15F4A00AED473 /* MJChiBaoZiFooter.m in Sources */,
-				2D7780EC1B2C1DE4009EF21B /* MJRefreshAutoGifFooter.m in Sources */,
 				2D9BEB121BB15F4A00AED473 /* MJExampleWindow.m in Sources */,
+				2DB2EA221BECBE6700D58F6A /* MJRefreshGifHeader.m in Sources */,
 				2D9BEB131BB15F4A00AED473 /* MJNavigationController.m in Sources */,
-				2D7780F31B2C1DE4009EF21B /* MJRefreshNormalHeader.m in Sources */,
+				2DB2EA271BECBE6700D58F6A /* UIScrollView+MJExtension.m in Sources */,
+				2DB2EA1F1BECBE6700D58F6A /* MJRefreshBackGifFooter.m in Sources */,
+				2DB2EA1C1BECBE6700D58F6A /* MJRefreshAutoGifFooter.m in Sources */,
+				2DB2EA231BECBE6700D58F6A /* MJRefreshNormalHeader.m in Sources */,
+				2DB2EA191BECBE6700D58F6A /* MJRefreshComponent.m in Sources */,
 				2D9BEB0E1BB15F4A00AED473 /* MJDIYBackFooter.m in Sources */,
 				2D9BEB161BB15F4A00AED473 /* AppDelegate.m in Sources */,
-				2D7780FE1B2C1DE4009EF21B /* UIView+MJExtension.m in Sources */,
+				2DB2EA291BECBE6700D58F6A /* UIView+MJExtension.m in Sources */,
 				2D9BEB141BB15F4A00AED473 /* MJSingleViewController.m in Sources */,
-				2D7780FD1B2C1DE4009EF21B /* UIScrollView+MJRefresh.m in Sources */,
 				2D9BEB0D1BB15F4A00AED473 /* MJDIYAutoFooter.m in Sources */,
-				2D7780EE1B2C1DE4009EF21B /* MJRefreshAutoStateFooter.m in Sources */,
-				2D7780F21B2C1DE4009EF21B /* MJRefreshGifHeader.m in Sources */,
 				2D9BEB1B1BB15F4A00AED473 /* MJWebViewViewController.m in Sources */,
+				2DB2EA171BECBE6700D58F6A /* MJRefreshAutoFooter.m in Sources */,
 				2D9BEB101BB15F4A00AED473 /* MJExample.m in Sources */,
+				2DB2EA201BECBE6700D58F6A /* MJRefreshBackNormalFooter.m in Sources */,
 				2DA7F92B1AA6B4C4005627AB /* main.m in Sources */,
-				2D7780F41B2C1DE4009EF21B /* MJRefreshStateHeader.m in Sources */,
-				2D7780F11B2C1DE4009EF21B /* MJRefreshBackStateFooter.m in Sources */,
+				2DB2EA1E1BECBE6700D58F6A /* MJRefreshAutoStateFooter.m in Sources */,
+				2DB2EA241BECBE6700D58F6A /* MJRefreshStateHeader.m in Sources */,
 				2D9BEB091BB15F4A00AED473 /* UIViewController+Example.m in Sources */,
-				2D7780ED1B2C1DE4009EF21B /* MJRefreshAutoNormalFooter.m in Sources */,
-				2D7780F01B2C1DE4009EF21B /* MJRefreshBackNormalFooter.m in Sources */,
-				2D77810E1B2C1E19009EF21B /* MJRefreshHeader.m in Sources */,
 				2D9BEB111BB15F4A00AED473 /* MJExampleViewController.m in Sources */,
-				2D77810A1B2C1E19009EF21B /* MJRefreshAutoFooter.m in Sources */,
+				2DB2EA1D1BECBE6700D58F6A /* MJRefreshAutoNormalFooter.m in Sources */,
 				2D9BEB0C1BB15F4A00AED473 /* MJChiBaoZiHeader.m in Sources */,
-				2D7780FC1B2C1DE4009EF21B /* UIScrollView+MJExtension.m in Sources */,
+				2DB2EA1B1BECBE6700D58F6A /* MJRefreshHeader.m in Sources */,
 				2D9BEB191BB15F4A00AED473 /* MJTestViewController.m in Sources */,
+				2DB2EA211BECBE6700D58F6A /* MJRefreshBackStateFooter.m in Sources */,
+				2DB2EA281BECBE6700D58F6A /* UIScrollView+MJRefresh.m in Sources */,
 				2D9BEB151BB15F4A00AED473 /* MJTempViewController.m in Sources */,
 				2D9BEB171BB15F4A00AED473 /* MJCollectionViewController.m in Sources */,
-				2D77810D1B2C1E19009EF21B /* MJRefreshFooter.m in Sources */,
 				2D9BEB0B1BB15F4A00AED473 /* MJChiBaoZiFooter2.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;

+ 0 - 0
MJRefreshExample/MJRefreshExample/Base.lproj/LaunchScreen.xib → MJRefreshExample/Base.lproj/LaunchScreen.xib


+ 0 - 0
MJRefreshExample/MJRefreshExample/Base.lproj/Main.storyboard → MJRefreshExample/Base.lproj/Main.storyboard


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Category/UIViewController+Example.h → MJRefreshExample/Classes/Category/UIViewController+Example.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Category/UIViewController+Example.m → MJRefreshExample/Classes/Category/UIViewController+Example.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJChiBaoZiFooter.h → MJRefreshExample/Classes/DIY/MJChiBaoZiFooter.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJChiBaoZiFooter.m → MJRefreshExample/Classes/DIY/MJChiBaoZiFooter.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJChiBaoZiFooter2.h → MJRefreshExample/Classes/DIY/MJChiBaoZiFooter2.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJChiBaoZiFooter2.m → MJRefreshExample/Classes/DIY/MJChiBaoZiFooter2.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJChiBaoZiHeader.h → MJRefreshExample/Classes/DIY/MJChiBaoZiHeader.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJChiBaoZiHeader.m → MJRefreshExample/Classes/DIY/MJChiBaoZiHeader.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJDIYAutoFooter.h → MJRefreshExample/Classes/DIY/MJDIYAutoFooter.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJDIYAutoFooter.m → MJRefreshExample/Classes/DIY/MJDIYAutoFooter.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJDIYBackFooter.h → MJRefreshExample/Classes/DIY/MJDIYBackFooter.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJDIYBackFooter.m → MJRefreshExample/Classes/DIY/MJDIYBackFooter.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJDIYHeader.h → MJRefreshExample/Classes/DIY/MJDIYHeader.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/DIY/MJDIYHeader.m → MJRefreshExample/Classes/DIY/MJDIYHeader.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJExample.h → MJRefreshExample/Classes/First/MJExample.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJExample.m → MJRefreshExample/Classes/First/MJExample.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJExampleViewController.h → MJRefreshExample/Classes/First/MJExampleViewController.h


+ 5 - 5
MJRefreshExample/MJRefreshExample/Classes/First/MJExampleViewController.m → MJRefreshExample/Classes/First/MJExampleViewController.m

@@ -65,23 +65,23 @@ static NSString *const MJExample30 = @"UIWebView";
     __weak UITableView *tableView = self.tableView;
     
     // 下拉刷新
-    tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
+    tableView.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{
         // 模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             // 结束刷新
-            [tableView.header endRefreshing];
+            [tableView.mj_header endRefreshing];
         });
     }];
     
     // 设置自动切换透明度(在导航栏下面自动隐藏)
-    tableView.header.automaticallyChangeAlpha = YES;
+    tableView.mj_header.automaticallyChangeAlpha = YES;
     
     // 上拉刷新
-    tableView.footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
+    tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
         // 模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             // 结束刷新
-            [tableView.footer endRefreshing];
+            [tableView.mj_footer endRefreshing];
         });
     }];
 }

+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJExampleWindow.h → MJRefreshExample/Classes/First/MJExampleWindow.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJExampleWindow.m → MJRefreshExample/Classes/First/MJExampleWindow.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJNavigationController.h → MJRefreshExample/Classes/First/MJNavigationController.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJNavigationController.m → MJRefreshExample/Classes/First/MJNavigationController.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJSingleViewController.h → MJRefreshExample/Classes/First/MJSingleViewController.h


+ 5 - 5
MJRefreshExample/MJRefreshExample/Classes/First/MJSingleViewController.m → MJRefreshExample/Classes/First/MJSingleViewController.m

@@ -24,24 +24,24 @@
     __weak typeof(self) weakSelf = self;
     __weak UITableView *tableView = self.tableView;
     
-    tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
+    tableView.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             weakSelf.count += 12;
             [tableView reloadData];
-            [tableView.header endRefreshing];
+            [tableView.mj_header endRefreshing];
         });
     }];
-    tableView.header.automaticallyChangeAlpha = YES;
+    tableView.mj_header.automaticallyChangeAlpha = YES;
     
     MJRefreshAutoNormalFooter *footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             weakSelf.count += 5;
             [tableView reloadData];
-            [tableView.footer endRefreshing];
+            [tableView.mj_footer endRefreshing];
         });
     }];
     footer.hidden = YES;
-    tableView.footer = footer;
+    tableView.mj_footer = footer;
 }
 
 - (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section

+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJTempViewController.h → MJRefreshExample/Classes/First/MJTempViewController.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/First/MJTempViewController.m → MJRefreshExample/Classes/First/MJTempViewController.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Other/AppDelegate.h → MJRefreshExample/Classes/Other/AppDelegate.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Other/AppDelegate.m → MJRefreshExample/Classes/Other/AppDelegate.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Second/MJCollectionViewController.h → MJRefreshExample/Classes/Second/MJCollectionViewController.h


+ 7 - 7
MJRefreshExample/MJRefreshExample/Classes/Second/MJCollectionViewController.m → MJRefreshExample/Classes/Second/MJCollectionViewController.m

@@ -31,7 +31,7 @@ static const CGFloat MJDuration = 2.0;
     __weak __typeof(self) weakSelf = self;
     
     // 下拉刷新
-    self.collectionView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
+    self.collectionView.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{
         // 增加5条假数据
         for (int i = 0; i<10; i++) {
             [weakSelf.colors insertObject:MJRandomColor atIndex:0];
@@ -42,13 +42,13 @@ static const CGFloat MJDuration = 2.0;
             [weakSelf.collectionView reloadData];
             
             // 结束刷新
-            [weakSelf.collectionView.header endRefreshing];
+            [weakSelf.collectionView.mj_header endRefreshing];
         });
     }];
-    [self.collectionView.header beginRefreshing];
+    [self.collectionView.mj_header beginRefreshing];
 
     // 上拉刷新
-    self.collectionView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
+    self.collectionView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
         // 增加5条假数据
         for (int i = 0; i<5; i++) {
             [weakSelf.colors addObject:MJRandomColor];
@@ -59,11 +59,11 @@ static const CGFloat MJDuration = 2.0;
             [weakSelf.collectionView reloadData];
             
             // 结束刷新
-            [weakSelf.collectionView.footer endRefreshing];
+            [weakSelf.collectionView.mj_footer endRefreshing];
         });
     }];
     // 默认先隐藏footer
-    self.collectionView.footer.hidden = YES;
+    self.collectionView.mj_footer.hidden = YES;
 }
 
 #pragma mark - 数据相关
@@ -108,7 +108,7 @@ static NSString *const MJCollectionViewCellIdentifier = @"color";
 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
 {
     // 设置尾部控件的显示和隐藏
-    self.collectionView.footer.hidden = self.colors.count == 0;
+    self.collectionView.mj_footer.hidden = self.colors.count == 0;
     return self.colors.count;
 }
 

+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Second/MJTableViewController.h → MJRefreshExample/Classes/Second/MJTableViewController.h


+ 30 - 30
MJRefreshExample/MJRefreshExample/Classes/Second/MJTableViewController.m → MJRefreshExample/Classes/Second/MJTableViewController.m

@@ -40,15 +40,15 @@ static const CGFloat MJDuration = 2.0;
     __weak __typeof(self) weakSelf = self;
     
     // 设置回调(一旦进入刷新状态就会调用这个refreshingBlock)
-    self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
+    self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
         [weakSelf loadNewData];
     }];
     
     // 马上进入刷新状态
-    [self.tableView.header beginRefreshing];
+    [self.tableView.mj_header beginRefreshing];
     
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-        [self.tableView.header beginRefreshing];
+        [self.tableView.mj_header beginRefreshing];
     });
 }
 
@@ -56,10 +56,10 @@ static const CGFloat MJDuration = 2.0;
 - (void)example02
 {
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
-    self.tableView.header = [MJChiBaoZiHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
+    self.tableView.mj_header = [MJChiBaoZiHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
     
     // 马上进入刷新状态
-    [self.tableView.header beginRefreshing];
+    [self.tableView.mj_header beginRefreshing];
 }
 
 #pragma mark UITableView + 下拉刷新 隐藏时间
@@ -78,7 +78,7 @@ static const CGFloat MJDuration = 2.0;
     [header beginRefreshing];
     
     // 设置header
-    self.tableView.header = header;
+    self.tableView.mj_header = header;
 }
 
 #pragma mark UITableView + 下拉刷新 隐藏状态和时间
@@ -97,7 +97,7 @@ static const CGFloat MJDuration = 2.0;
     [header beginRefreshing];
     
     // 设置header
-    self.tableView.header = header;
+    self.tableView.mj_header = header;
 }
 
 #pragma mark UITableView + 下拉刷新 自定义文字
@@ -123,15 +123,15 @@ static const CGFloat MJDuration = 2.0;
     [header beginRefreshing];
     
     // 设置刷新控件
-    self.tableView.header = header;
+    self.tableView.mj_header = header;
 }
 
 #pragma mark UITableView + 下拉刷新 自定义刷新控件
 - (void)example06
 {
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
-    self.tableView.header = [MJDIYHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
-    [self.tableView.header beginRefreshing];
+    self.tableView.mj_header = [MJDIYHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
+    [self.tableView.mj_header beginRefreshing];
 }
 
 #pragma mark UITableView + 上拉刷新 默认
@@ -142,7 +142,7 @@ static const CGFloat MJDuration = 2.0;
     __weak __typeof(self) weakSelf = self;
     
     // 设置回调(一旦进入刷新状态就会调用这个refreshingBlock)
-    self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
+    self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
         [weakSelf loadMoreData];
     }];
 }
@@ -153,7 +153,7 @@ static const CGFloat MJDuration = 2.0;
     [self example01];
     
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
-    self.tableView.footer = [MJChiBaoZiFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
+    self.tableView.mj_footer = [MJChiBaoZiFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
 }
 
 #pragma mark UITableView + 上拉刷新 隐藏刷新状态的文字
@@ -171,7 +171,7 @@ static const CGFloat MJDuration = 2.0;
     footer.refreshingTitleHidden = YES;
     
     // 设置footer
-    self.tableView.footer = footer;
+    self.tableView.mj_footer = footer;
 }
 
 #pragma mark UITableView + 上拉刷新 全部加载完毕
@@ -180,7 +180,7 @@ static const CGFloat MJDuration = 2.0;
     [self example01];
     
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadLastData方法)
-    self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadLastData)];
+    self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadLastData)];
     
     // 其他
     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"恢复数据加载" style:UIBarButtonItemStyleDone target:self action:@selector(reset)];
@@ -188,9 +188,9 @@ static const CGFloat MJDuration = 2.0;
 
 - (void)reset
 {
-    [self.tableView.footer setRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
-//    [self.tableView.footer beginRefreshing];
-    [self.tableView.footer resetNoMoreData];
+    [self.tableView.mj_footer setRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
+//    [self.tableView.mj_footer beginRefreshing];
+    [self.tableView.mj_footer resetNoMoreData];
 }
 
 #pragma mark UITableView + 上拉刷新 禁止自动加载
@@ -205,7 +205,7 @@ static const CGFloat MJDuration = 2.0;
     footer.automaticallyRefresh = NO;
     
     // 设置footer
-    self.tableView.footer = footer;
+    self.tableView.mj_footer = footer;
 }
 
 #pragma mark UITableView + 上拉刷新 自定义文字
@@ -229,7 +229,7 @@ static const CGFloat MJDuration = 2.0;
     footer.stateLabel.textColor = [UIColor blueColor];
     
     // 设置footer
-    self.tableView.footer = footer;
+    self.tableView.mj_footer = footer;
 }
 
 #pragma mark UITableView + 上拉刷新 加载后隐藏
@@ -238,7 +238,7 @@ static const CGFloat MJDuration = 2.0;
     [self example01];
     
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadOnceData方法)
-    self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadOnceData)];
+    self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadOnceData)];
 }
 
 #pragma mark UITableView + 上拉刷新 自动回弹的上拉01
@@ -247,11 +247,11 @@ static const CGFloat MJDuration = 2.0;
     [self example01];
     
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
-    self.tableView.footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
+    self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
     // 设置了底部inset
     self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 30, 0);
     // 忽略掉底部inset
-    self.tableView.footer.ignoredScrollViewContentInsetBottom = 30;
+    self.tableView.mj_footer.ignoredScrollViewContentInsetBottom = 30;
 }
 
 #pragma mark UITableView + 上拉刷新 自动回弹的上拉02
@@ -260,8 +260,8 @@ static const CGFloat MJDuration = 2.0;
     [self example01];
     
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadLastData方法)
-    self.tableView.footer = [MJChiBaoZiFooter2 footerWithRefreshingTarget:self refreshingAction:@selector(loadLastData)];
-    self.tableView.footer.automaticallyChangeAlpha = YES;
+    self.tableView.mj_footer = [MJChiBaoZiFooter2 footerWithRefreshingTarget:self refreshingAction:@selector(loadLastData)];
+    self.tableView.mj_footer.automaticallyChangeAlpha = YES;
 }
 
 #pragma mark UITableView + 上拉刷新 自定义刷新控件(自动刷新)
@@ -270,7 +270,7 @@ static const CGFloat MJDuration = 2.0;
     [self example01];
     
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
-    self.tableView.footer = [MJDIYAutoFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
+    self.tableView.mj_footer = [MJDIYAutoFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
 }
 
 #pragma mark UITableView + 上拉刷新 自定义刷新控件(自动回弹)
@@ -279,7 +279,7 @@ static const CGFloat MJDuration = 2.0;
     [self example01];
     
     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
-    self.tableView.footer = [MJDIYBackFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
+    self.tableView.mj_footer = [MJDIYBackFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
 }
 
 #pragma mark - 数据处理相关
@@ -297,7 +297,7 @@ static const CGFloat MJDuration = 2.0;
         [self.tableView reloadData];
         
         // 拿到当前的下拉刷新控件,结束刷新状态
-        [self.tableView.header endRefreshing];
+        [self.tableView.mj_header endRefreshing];
     });
 }
 
@@ -315,7 +315,7 @@ static const CGFloat MJDuration = 2.0;
         [self.tableView reloadData];
         
         // 拿到当前的上拉刷新控件,结束刷新状态
-        [self.tableView.footer endRefreshing];
+        [self.tableView.mj_footer endRefreshing];
     });
 }
 
@@ -333,7 +333,7 @@ static const CGFloat MJDuration = 2.0;
         [self.tableView reloadData];
         
         // 拿到当前的上拉刷新控件,变为没有更多数据的状态
-        [self.tableView.footer endRefreshingWithNoMoreData];
+        [self.tableView.mj_footer endRefreshingWithNoMoreData];
     });
 }
 
@@ -351,7 +351,7 @@ static const CGFloat MJDuration = 2.0;
         [self.tableView reloadData];
         
         // 隐藏当前的上拉刷新控件
-        self.tableView.footer.hidden = YES;
+        self.tableView.mj_footer.hidden = YES;
     });
 }
 

+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Second/MJTestViewController.h → MJRefreshExample/Classes/Second/MJTestViewController.h


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Second/MJTestViewController.m → MJRefreshExample/Classes/Second/MJTestViewController.m


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Second/MJTestViewController.xib → MJRefreshExample/Classes/Second/MJTestViewController.xib


+ 0 - 0
MJRefreshExample/MJRefreshExample/Classes/Second/MJWebViewViewController.h → MJRefreshExample/Classes/Second/MJWebViewViewController.h


+ 2 - 2
MJRefreshExample/MJRefreshExample/Classes/Second/MJWebViewViewController.m → MJRefreshExample/Classes/Second/MJWebViewViewController.m

@@ -24,7 +24,7 @@
     __weak UIScrollView *scrollView = self.webView.scrollView;
     
     // 添加下拉刷新控件
-    scrollView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
+    scrollView.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{
         [webView reload];
     }];
     
@@ -34,7 +34,7 @@
 #pragma mark - webViewDelegate
 - (void)webViewDidFinishLoad:(nonnull UIWebView *)webView
 {
-    [self.webView.scrollView.header endRefreshing];
+    [self.webView.scrollView.mj_header endRefreshing];
 }
 
 #pragma mark - 其他

+ 6 - 2
MJRefreshExample/MJRefreshExample/Classes/Second/MJWebViewViewController.xib → MJRefreshExample/Classes/Second/MJWebViewViewController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8121.17" systemVersion="14E33b" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8101.14"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
     </dependencies>
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MJWebViewViewController">
@@ -18,10 +18,12 @@
             <subviews>
                 <webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2Of-d4-HFt">
                     <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                    <animations/>
                     <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                 </webView>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8xo-5D-MRC">
                     <rect key="frame" x="241" y="537" width="113" height="30"/>
+                    <animations/>
                     <color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                     <constraints>
                         <constraint firstAttribute="width" constant="113" id="2YR-NZ-hF1"/>
@@ -36,6 +38,7 @@
                 </button>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注意,这不是原生界面,是个网页:http://weibo.com/excepptions" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2VR-jQ-Qn4">
                     <rect key="frame" x="146" y="459" width="208" height="31.5"/>
+                    <animations/>
                     <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.16" colorSpace="custom" customColorSpace="sRGB"/>
                     <constraints>
                         <constraint firstAttribute="width" constant="208" id="qkq-G9-eo2"/>
@@ -45,6 +48,7 @@
                     <nil key="highlightedColor"/>
                 </label>
             </subviews>
+            <animations/>
             <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
             <constraints>
                 <constraint firstItem="2Of-d4-HFt" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="3LR-sb-d2d"/>

+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/AppIcon.appiconset/AppIcon@2x.png → MJRefreshExample/Images.xcassets/AppIcon.appiconset/AppIcon@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/AppIcon.appiconset/Contents.json → MJRefreshExample/Images.xcassets/AppIcon.appiconset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/Contents.json → MJRefreshExample/Images.xcassets/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0001.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0001.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0001.imageset/dropdown_anim__0001@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0001.imageset/dropdown_anim__0001@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00010.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00010.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00010.imageset/dropdown_anim__00010@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00010.imageset/dropdown_anim__00010@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00011.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00011.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00011.imageset/dropdown_anim__00011@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00011.imageset/dropdown_anim__00011@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00012.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00012.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00012.imageset/dropdown_anim__00012@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00012.imageset/dropdown_anim__00012@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00013.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00013.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00013.imageset/dropdown_anim__00013@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00013.imageset/dropdown_anim__00013@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00014.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00014.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00014.imageset/dropdown_anim__00014@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00014.imageset/dropdown_anim__00014@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00015.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00015.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00015.imageset/dropdown_anim__00015@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00015.imageset/dropdown_anim__00015@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00016.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00016.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00016.imageset/dropdown_anim__00016@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00016.imageset/dropdown_anim__00016@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00017.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00017.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00017.imageset/dropdown_anim__00017@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00017.imageset/dropdown_anim__00017@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00018.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00018.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00018.imageset/dropdown_anim__00018@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00018.imageset/dropdown_anim__00018@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00019.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00019.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00019.imageset/dropdown_anim__00019@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00019.imageset/dropdown_anim__00019@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0002.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0002.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0002.imageset/dropdown_anim__0002@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0002.imageset/dropdown_anim__0002@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00020.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00020.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00020.imageset/dropdown_anim__00020@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00020.imageset/dropdown_anim__00020@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00021.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00021.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00021.imageset/dropdown_anim__00021@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00021.imageset/dropdown_anim__00021@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00022.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00022.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00022.imageset/dropdown_anim__00022@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00022.imageset/dropdown_anim__00022@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00023.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00023.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00023.imageset/dropdown_anim__00023@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00023.imageset/dropdown_anim__00023@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00024.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00024.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00024.imageset/dropdown_anim__00024@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00024.imageset/dropdown_anim__00024@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00025.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00025.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00025.imageset/dropdown_anim__00025@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00025.imageset/dropdown_anim__00025@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00026.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00026.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00026.imageset/dropdown_anim__00026@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00026.imageset/dropdown_anim__00026@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00027.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00027.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00027.imageset/dropdown_anim__00027@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00027.imageset/dropdown_anim__00027@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00028.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00028.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00028.imageset/dropdown_anim__00028@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00028.imageset/dropdown_anim__00028@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00029.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00029.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00029.imageset/dropdown_anim__00029@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00029.imageset/dropdown_anim__00029@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0003.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0003.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0003.imageset/dropdown_anim__0003@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__0003.imageset/dropdown_anim__0003@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00030.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00030.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00030.imageset/dropdown_anim__00030@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00030.imageset/dropdown_anim__00030@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00031.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00031.imageset/Contents.json


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00031.imageset/dropdown_anim__00031@2x.png → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00031.imageset/dropdown_anim__00031@2x.png


+ 0 - 0
MJRefreshExample/MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00032.imageset/Contents.json → MJRefreshExample/Images.xcassets/DianPing/dropdown_anim__00032.imageset/Contents.json


Some files were not shown because too many files changed in this diff