iOS中鏈?zhǔn)骄幊讨凶罱?jīng)典的例子是Masonry為代表的代碼形式集晚,代碼如下:
make.edges.equalTo(superview).with.insets(100);
Objective-C 鏈?zhǔn)骄幊?/h1>
Objective-C中實(shí)現(xiàn)鏈?zhǔn)骄幊讨饕峭ㄟ^(guò)Block來(lái)實(shí)現(xiàn)枝笨,利用方法的點(diǎn)式調(diào)用,自定義FEHeaderView并鸵,定義如下:
@class FEHeaderView;
typedef FEHeaderView *(^FEHeaderBlock)(UIColor *color);
typedef FEHeaderView *(^FEHeaderAssignBlock)(CGFloat num);
@interface FEHeaderView : UIView
- (FEHeaderBlock)bgColor;
- (FEHeaderAssignBlock)borderWidth;
- (FEHeaderBlock)borderColor;
@end
實(shí)現(xiàn)如下:
@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
測(cè)試代碼:
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 鏈?zhǔn)骄幊?/h1>
Swift中的實(shí)現(xiàn)鏈?zhǔn)骄幊瘫萇bjective-C中簡(jiǎn)單很多级零,通過(guò)func和extension即可實(shí)現(xiàn).
擴(kuò)展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
}
}
測(cè)試代碼:
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