Browse Source

Add more Chaining grammar (#1508)

Frank 4 years ago
parent
commit
55ca735d13

+ 1 - 1
MJRefresh/Base/MJRefreshComponent.h

@@ -137,7 +137,7 @@ typedef void (^MJRefreshComponentAction)(void);
 
 /// 需要子类必须实现
 /// @param scrollView 赋值给的 ScrollView 的 Header/Footer/Trailer
-- (instancetype)assignTo:(UIScrollView *)scrollView;
+- (instancetype)linkTo:(UIScrollView *)scrollView;
 
 @end
 

+ 1 - 1
MJRefresh/Base/MJRefreshComponent.m

@@ -307,7 +307,7 @@ - (instancetype)afterEndingAction:(MJRefreshComponentAction)action {
     return self;
 }
 
-- (instancetype)assignTo:(UIScrollView *)scrollView {
+- (instancetype)linkTo:(UIScrollView *)scrollView {
     return self;
 }
 

+ 1 - 1
MJRefresh/Base/MJRefreshFooter.m

@@ -42,7 +42,7 @@ - (void)prepare
 
 #pragma mark . 链式语法部分 .
 
-- (instancetype)assignTo:(UIScrollView *)scrollView {
+- (instancetype)linkTo:(UIScrollView *)scrollView {
     scrollView.mj_footer = self;
     return self;
 }

+ 1 - 1
MJRefresh/Base/MJRefreshHeader.m

@@ -244,7 +244,7 @@ - (void)headerRefreshingAction {
 
 #pragma mark . 链式语法部分 .
 
-- (instancetype)assignTo:(UIScrollView *)scrollView {
+- (instancetype)linkTo:(UIScrollView *)scrollView {
     scrollView.mj_header = self;
     return self;
 }

+ 1 - 1
MJRefresh/Base/MJRefreshTrailer.m

@@ -152,7 +152,7 @@ - (void)willMoveToSuperview:(UIView *)newSuperview {
 
 #pragma mark . 链式语法部分 .
 
-- (instancetype)assignTo:(UIScrollView *)scrollView {
+- (instancetype)linkTo:(UIScrollView *)scrollView {
     scrollView.mj_trailer = self;
     return self;
 }

+ 2 - 2
MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h

@@ -14,8 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic, readonly) UIImageView *gifView;
 
 /** 设置state状态下的动画图片images 动画持续时间duration*/
-- (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
-- (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
+- (instancetype)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
+- (instancetype)setImages:(NSArray *)images forState:(MJRefreshState)state;
 @end
 
 NS_ASSUME_NONNULL_END

+ 5 - 4
MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m

@@ -46,9 +46,9 @@ - (NSMutableDictionary *)stateDurations
 }
 
 #pragma mark - 公共方法
-- (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state
+- (instancetype)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state
 {
-    if (images == nil) return;
+    if (images == nil) return self;
     
     self.stateImages[@(state)] = images;
     self.stateDurations[@(state)] = @(duration);
@@ -58,11 +58,12 @@ - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(
     if (image.size.height > self.mj_h) {
         self.mj_h = image.size.height;
     }
+    return self;
 }
 
-- (void)setImages:(NSArray *)images forState:(MJRefreshState)state
+- (instancetype)setImages:(NSArray *)images forState:(MJRefreshState)state
 {
-    [self setImages:images duration:images.count * 0.1 forState:state];
+    return [self setImages:images duration:images.count * 0.1 forState:state];
 }
 
 #pragma mark - 实现父类的方法

+ 1 - 1
MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h

@@ -17,7 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic, readonly) UILabel *stateLabel;
 
 /** 设置state状态下的文字 */
-- (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
+- (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state;
 
 /** 隐藏刷新状态的文字 */
 @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden;

+ 3 - 2
MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m

@@ -36,11 +36,12 @@ - (UILabel *)stateLabel
 }
 
 #pragma mark - 公共方法
-- (void)setTitle:(NSString *)title forState:(MJRefreshState)state
+- (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state
 {
-    if (title == nil) return;
+    if (title == nil) return self;
     self.stateTitles[@(state)] = title;
     self.stateLabel.text = self.stateTitles[@(self.state)];
+    return self;
 }
 
 #pragma mark - 私有方法

+ 2 - 2
MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h

@@ -14,8 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic, readonly) UIImageView *gifView;
 
 /** 设置state状态下的动画图片images 动画持续时间duration*/
-- (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
-- (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
+- (instancetype)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
+- (instancetype)setImages:(NSArray *)images forState:(MJRefreshState)state;
 @end
 
 NS_ASSUME_NONNULL_END

+ 5 - 4
MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m

@@ -46,9 +46,9 @@ - (NSMutableDictionary *)stateDurations
 }
 
 #pragma mark - 公共方法
-- (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state
+- (instancetype)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state
 {
-    if (images == nil) return;
+    if (images == nil) return self;
     
     self.stateImages[@(state)] = images;
     self.stateDurations[@(state)] = @(duration);
@@ -58,11 +58,12 @@ - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(
     if (image.size.height > self.mj_h) {
         self.mj_h = image.size.height;
     }
+    return self;
 }
 
-- (void)setImages:(NSArray *)images forState:(MJRefreshState)state
+- (instancetype)setImages:(NSArray *)images forState:(MJRefreshState)state
 {
-    [self setImages:images duration:images.count * 0.1 forState:state];
+    return [self setImages:images duration:images.count * 0.1 forState:state];
 }
 
 #pragma mark - 实现父类的方法

+ 1 - 1
MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h

@@ -16,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN
 /** 显示刷新状态的label */
 @property (weak, nonatomic, readonly) UILabel *stateLabel;
 /** 设置state状态下的文字 */
-- (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
+- (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state;
 
 /** 获取state状态下的title */
 - (NSString *)titleForState:(MJRefreshState)state;

+ 3 - 2
MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m

@@ -36,11 +36,12 @@ - (UILabel *)stateLabel
 }
 
 #pragma mark - 公共方法
-- (void)setTitle:(NSString *)title forState:(MJRefreshState)state
+- (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state
 {
-    if (title == nil) return;
+    if (title == nil) return self;
     self.stateTitles[@(state)] = title;
     self.stateLabel.text = self.stateTitles[@(self.state)];
+    return self;
 }
 
 - (NSString *)titleForState:(MJRefreshState)state {

+ 2 - 2
MJRefresh/Custom/Header/MJRefreshGifHeader.h

@@ -14,8 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic, readonly) UIImageView *gifView;
 
 /** 设置state状态下的动画图片images 动画持续时间duration*/
-- (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
-- (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
+- (instancetype)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
+- (instancetype)setImages:(NSArray *)images forState:(MJRefreshState)state;
 @end
 
 NS_ASSUME_NONNULL_END

+ 11 - 11
MJRefresh/Custom/Header/MJRefreshGifHeader.m

@@ -46,23 +46,23 @@ - (NSMutableDictionary *)stateDurations
 }
 
 #pragma mark - 公共方法
-- (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state 
-{ 
-    if (images == nil) return; 
+- (instancetype)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state {
+    if (images == nil) return self;
     
-    self.stateImages[@(state)] = images; 
-    self.stateDurations[@(state)] = @(duration); 
+    self.stateImages[@(state)] = images;
+    self.stateDurations[@(state)] = @(duration);
     
     /* 根据图片设置控件的高度 */ 
-    UIImage *image = [images firstObject]; 
-    if (image.size.height > self.mj_h) { 
-        self.mj_h = image.size.height; 
-    } 
+    UIImage *image = [images firstObject];
+    if (image.size.height > self.mj_h) {
+        self.mj_h = image.size.height;
+    }
+    return self;
 }
 
-- (void)setImages:(NSArray *)images forState:(MJRefreshState)state 
+- (instancetype)setImages:(NSArray *)images forState:(MJRefreshState)state 
 { 
-    [self setImages:images duration:images.count * 0.1 forState:state]; 
+    return [self setImages:images duration:images.count * 0.1 forState:state];
 }
 
 #pragma mark - 实现父类的方法

+ 7 - 1
MJRefresh/Custom/Header/MJRefreshStateHeader.h

@@ -23,7 +23,13 @@ NS_ASSUME_NONNULL_BEGIN
 /** 显示刷新状态的label */
 @property (weak, nonatomic, readonly) UILabel *stateLabel;
 /** 设置state状态下的文字 */
-- (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
+- (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state;
+@end
+
+@interface MJRefreshStateHeader (ChainingGrammar)
+
+- (instancetype)modifyLastUpdatedTimeText:(NSString * (^)(NSDate * _Nullable lastUpdatedTime))handler;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 13 - 2
MJRefresh/Custom/Header/MJRefreshStateHeader.m

@@ -46,11 +46,12 @@ - (UILabel *)lastUpdatedTimeLabel
 }
 
 #pragma mark - 公共方法
-- (void)setTitle:(NSString *)title forState:(MJRefreshState)state
+- (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state
 {
-    if (title == nil) return;
+    if (title == nil) return self;
     self.stateTitles[@(state)] = title;
     self.stateLabel.text = self.stateTitles[@(self.state)];
+    return self;
 }
 
 #pragma mark key的处理
@@ -157,3 +158,13 @@ - (void)setState:(MJRefreshState)state
     self.lastUpdatedTimeKey = self.lastUpdatedTimeKey;
 }
 @end
+
+#pragma mark - <<< 为 Swift 扩展链式语法 >>> -
+@implementation MJRefreshStateHeader (ChainingGrammar)
+
+- (instancetype)modifyLastUpdatedTimeText:(NSString * _Nonnull (^)(NSDate * _Nullable))handler {
+    self.lastUpdatedTimeText = handler;
+    return self;
+}
+
+@end

+ 1 - 1
MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h

@@ -17,7 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
 /** 显示刷新状态的label */
 @property (weak, nonatomic, readonly) UILabel *stateLabel;
 /** 设置state状态下的文字 */
-- (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
+- (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state;
 
 @end
 

+ 3 - 2
MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m

@@ -35,9 +35,10 @@ - (UILabel *)stateLabel {
 }
 
 #pragma mark - 公共方法
-- (void)setTitle:(NSString *)title forState:(MJRefreshState)state {
-    if (title == nil) return;
+- (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state {
+    if (title == nil) return self;
     self.stateTitles[@(state)] = title;
+    return self;
 }
 
 #pragma mark - 覆盖父类的方法

+ 2 - 2
MJRefreshExample/Classes/Second/MJCollectionViewController.m

@@ -43,7 +43,7 @@ - (void)example21
             // 结束刷新
             [weakSelf.collectionView.mj_header endRefreshing];
         });
-    }] assignTo:self.collectionView];
+    }] linkTo:self.collectionView];
     self.collectionView.mj_header.isCollectionViewAnimationBug = YES;
     // 简单粗暴版本
 //    [self.collectionView.mj_header setAnimationDisabled];
@@ -64,7 +64,7 @@ - (void)example21
         });
     }] setAnimationDisabled]
       autoChangeTransparency:YES]
-     assignTo:self.collectionView];
+     linkTo:self.collectionView];
 }
 
 #pragma mark - 数据相关

+ 1 - 1
MJRefreshExample/Classes/Second/MJWebViewViewController.m

@@ -28,7 +28,7 @@ - (void)example31
     [[[MJChiBaoZiHeader headerWithRefreshingBlock:^{
             [webView reload];
         }]
-         assignTo:scrollView]
+         linkTo:scrollView]
         autoChangeTransparency:YES];
     
     // 如果是上拉刷新,就以此类推

+ 1 - 1
MJRefreshExample/Classes/SwiftExample/MJWKWebViewController.swift

@@ -19,7 +19,7 @@ class MJWKWebViewController: UIViewController {
         MJChiBaoZiHeader { [weak self] in
             self?.webView.reload()
         }.autoChangeTransparency(true)
-        .assign(to: webView.scrollView)
+        .link(to: webView.scrollView)
         
         webView.scrollView.mj_header?.beginRefreshing()
     }