iOS 链式编程

2018-06-20  本文已影响0人  阿文灬

本来想将题目取名为 masonry源码心得之链式编程 的。但想着想着没什么必要,我写文章主要目的是做笔记自己看的。
链式编程是OC中一种很好的设计模式。框架中使用链式编程,会让框架使用者感觉写的代码更加美观简洁。
Masonry是使用了该模式的框架,所以部分代码展示使用了Masonry。
让自己的代码越来越好:
1、多看设计模式与算法的书籍,提高认知。
2、多看一些好的框架源码(它们很好的运用了一些设计模式和算法),对自己的实践能力有很大的帮助。
3、对自己要求更高一点,多一点美的追求。

链式编程de效果

UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);
[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(superview).with.insets(padding);
}];

链式编程de关键语法

链式编程使用的两个关键且常用的语法:点语法、block。

@interface MASConstraint
- (MASConstraint *)left;
- (MASConstraint * (^)(id attr))mas_equalTo;
@end

使用链式编程de SegmentBar

估计大家都封装过一个 SegmentBar:segmentBar简单示例code

// 主要代码
@interface LWSegmentBarConfig : NSObject
@property (nonatomic, strong) UIColor *itemNormalColor;
@property (nonatomic, strong) UIColor *itemSelectColor;
@end

// 使用演示
LWSegmentBarConfig *config = [LWSegmentBarConfig new];
config.itemNormalColor = [UIColor lightGrayColor];
config.itemSelectColor = [UIColor blueColor];
...属性很多

LWSegmentBar *bar = [LWSegmentBar segmentBarWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64) segmentBarConfig:config];
// 主要代码
@interface LWSegmentBarConfig : NSObject
- (LWSegmentBarConfig *(^)(UIColor *color))lw_itemNormalColor;
- (LWSegmentBarConfig *(^)(UIColor *color))lw_itemSelectColor;
@end

@implementation LWSegmentBarConfig
- (LWSegmentBarConfig *(^)(UIColor *color))lw_itemNormalColor {
    return ^(UIColor *color) {
        self.itemNormalColor = color;
        return self;
    };
}

- (LWSegmentBarConfig *(^)(UIColor *color))lw_itemSelectColor {
    return ^(UIColor *color) {
        self.itemSelectColor = color;
        return self;
    };
}
@end

// 使用演示
LWSegmentBar *bar = [XMGSegmentBar segmentBarWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];
[bar lw_updateConfig:^(LWSegmentBarConfig *config) {
    config.lw_itemNormalColor([UIColor lightGrayColor]).lw_itemSelectColor([UIColor blueColor]);
}];
上一篇 下一篇

猜你喜欢

热点阅读