iOS-链式编程

iOS中链式编程中最经典的例子是Masonry为代表的代码形式,代码如下:

make.edges.equalTo(superview).with.insets(100);

Objective-C 链式编程

Objective-C中实现链式编程主要是通过Block来实现,利用方法的点式调用,自定义FEHeaderView,定义如下:

@class FEHeaderView;

typedef FEHeaderView *(^FEHeaderBlock)(UIColor *color);

typedef FEHeaderView *(^FEHeaderAssignBlock)(CGFloat num);

@interface FEHeaderView : UIView


- (FEHeaderBlock)bgColor;

- (FEHeaderAssignBlock)borderWidth;

- (FEHeaderBlock)borderColor;

@end

实现如下:

@implementation FEHeaderView


- (FEHeaderBlock)bgColor {
    FEHeaderBlock block = ^(UIColor *color) {
        self.backgroundColor = color;
        return self;
    };
    return block;
}

- (FEHeaderAssignBlock)borderWidth {
    FEHeaderAssignBlock block = ^(CGFloat width) {
        self.layer.masksToBounds = YES;
        self.layer.borderWidth = width;
        return self;
    };
    return block;
}

- (FEHeaderBlock)borderColor {
    FEHeaderBlock block = ^(UIColor *color) {
        self.layer.borderColor = color.CGColor;
        return self;
    };
    return block;
}

@end

测试代码:

   FEHeaderView *view = [[FEHeaderView alloc] initWithFrame:CGRectMake(100, 200, 100, 100)];
    
    view.bgColor([UIColor grayColor]).borderWidth(3.0).borderColor([UIColor redColor]);
    
    [self.view addSubview:view];
FlyElephant.png

Swift 链式编程

Swift中的实现链式编程比Objective-C中简单很多,通过func和extension即可实现.
扩展UIView:

extension UIView {
    
    func bgColor(color:UIColor) -> UIView {
        self.backgroundColor = color
        return self
    }
    
    func borderColor(color:UIColor) -> UIView {
        self.layer.borderColor = color.cgColor
        self.layer.masksToBounds = true
        return self
    }
    
    func borderWidth(width:Float) -> UIView {
        self.layer.borderWidth = CGFloat(width)
        return self
    }
    
}

测试代码:

let view:UIView = UIView(frame: CGRect(x: 100, y: 200, width: 100, height: 100)).bgColor(color: UIColor.red).borderColor(color: UIColor.gray).borderWidth(width: 5.0)
        self.view.addSubview(view)
FlyElephant.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,393评论 4 61
  • 2016.07.29 我之前一直觉得这种书籍对于我来说,是想读又不想读的书,为什么这样说呢?想读是因为他对我应该有...
    Makiyoko阅读 10,296评论 0 0
  • 我坐在那个小教室里看小人书, 那本小人书原来住在公园旁的小书店。 小书店里面有很多小孩, 我也背着书包...
    阿驴阅读 2,662评论 0 1
  • 跑十公里,是我从来没想过的事情,今天周日,我们小二十人组织跑奥森公园一圈,10公里多,五点就醒来了,六点出发,七点...
    心羽暖姐姐阅读 3,030评论 0 0
  • 《情感化设计》中将设计分为三个层次:本能层次、行为层次、反思层次。 本能层次的设计:产品外观、风格,给人的第一感觉...
    看那只还魂尸阅读 3,712评论 0 2

友情链接更多精彩内容