ios開(kāi)發(fā)-鏈?zhǔn)骄幊?/h2>

什么是鏈?zhǔn)骄幊?,我看到這個(gè)東西第一反應(yīng),這不就是一個(gè)裝飾模式嘛,其實(shí)我的理解,鏈?zhǔn)骄幊叹褪且粋€(gè)寫(xiě)法特別的裝飾模式,具體怎么特別呢。他用“.”來(lái)鏈接各個(gè)代碼塊,大家最熟悉的應(yīng)該就是現(xiàn)在特別火的masonry了(雖然我還是用frame。。)

[view mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.left.bottom.and.right.equalTo(@(0));//這句就是了
    }];

這種寫(xiě)法的好處呢,看起來(lái)清晰明了,,不過(guò)masonry太難懂了,我找了好幾個(gè)鏈?zhǔn)骄幊痰拇a,最后自己寫(xiě)了一個(gè),非常簡(jiǎn)單,方便大家入門(mén)。

先來(lái)一個(gè)h文件放定義的block(忘了說(shuō)了鏈?zhǔn)骄幊痰拇a塊是使用block實(shí)現(xiàn)的)-文件名LinkBlocks.h

@class LinkLabel;

typedef LinkLabel *(^MakeFrame)(CGRect frame);
#define MakeFrame(frame) ^LinkLabel *(CGRect frame)

typedef LinkLabel *(^MakeBackgroundColor)(UIColor * color);
#define MakeBackgroundColor(color) ^LinkLabel *(UIColor * color)

接下來(lái)寫(xiě)一個(gè)label,就舉個(gè)例子我就只寫(xiě)兩個(gè)屬性了,懶死了

h文件

#import <UIKit/UIKit.h>
#import "LinkBlocks.h"

@interface LinkLabel : UILabel
/** frame */
@property (nonatomic, copy) MakeFrame makeFrame;
/** backgoundcolor */
@property (nonatomic, copy) MakeBackgroundColor makeColor;

+(instancetype)labelinitWith:(void (^)(LinkLabel *make)) initblock;

@end
m文件
#import "LinkLabel.h"

@implementation LinkLabel

+(instancetype)labelinitWith:(void (^)(LinkLabel *make)) initblock{
    LinkLabel *lable = [[LinkLabel alloc] init];
    if (initblock) {
        initblock(lable);
    }
    return lable;
}

-(MakeFrame)makeFrame{
    return MakeFrame(frame){
        self.frame = frame;
        return self;
    };
}

-(MakeBackgroundColor)makeColor{
    return MakeBackgroundColor(color){
        self.backgroundColor = color;
        return self;
    };
}

@end

最后來(lái)個(gè)使用

LinkLabel * label = [LinkLabel labelinitWith:^(LinkLabel *make) {
        make.makeFrame(CGRectMake(100, 100, 100, 30)).makeColor([UIColor yellowColor]);
    }];
    label.text = @"link label";
    [self.view addSubview:label];

好啦,打完收工。大家有什么問(wèn)題,咱們一起討論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容