Masonry架構(gòu)分析

第一步:導(dǎo)入masonry框架捣卤,再導(dǎo)入頭文件

#import "Masonry.h"

第二步 :設(shè)置約束

核心代碼:

   // 設(shè)置約束,一定要先把view添加上去,才能設(shè)置約束
 [redView mas_makeConstraints:^(MASConstraintMaker *make) {
        
}];

注意點(diǎn):使用約束布局步驟肖揣,先添加控件唧龄,再設(shè)置約束

- (void)viewDidLoad {
    [super viewDidLoad];
 
    // 創(chuàng)建紅色view
    UIView *redView = [[UIView alloc] init];
    redView.backgroundColor = [UIColor redColor];
    [self.view addSubview:redView];
    
    // 設(shè)置約束,一定要先把view添加上去,才能設(shè)置約束
    [redView mas_makeConstraints:^(MASConstraintMaker *make) {
        // 鏈?zhǔn)骄幊趟枷胩攸c(diǎn):方法返回值必須要方法調(diào)用者
        // block:把需要操作的值當(dāng)做block參數(shù),block也需要返回值,就是方法調(diào)用者
       // 設(shè)置約束
        // 給make添加left,top約束,調(diào)用equalTo給這兩個(gè)約束賦值
        make.left.top.equalTo(@10);
        make.right.bottom.equalTo(@-10);
        
    }];

效果圖

19.png

補(bǔ)充:

mas_makeConstraints執(zhí)行流程:
1.創(chuàng)建約束制造者M(jìn)ASConstraintMaker,綁定控件,生成了一個(gè)保存所有約束的數(shù)組
2.執(zhí)行mas_makeConstraints傳入進(jìn)行的block
3.讓約束制造者安裝約束
* 1.清空之前的所有約束
* 2.遍歷約束數(shù)組,一個(gè)一個(gè)安裝

實(shí)例練習(xí):寫一個(gè)加法計(jì)算器

思路分析:

第一步:寫一個(gè)自己的方法

  • 1、繼承NSObject,建一個(gè)計(jì)算分類疙渣,提供計(jì)算方法
111.png
  • 2腥例、模仿[redView mas_makeConstraints:^(MASConstraintMaker *make) { }

NSObject+Calculate.h中,設(shè)置自己的方法

11.png
/*
 * 方法設(shè)計(jì):自己框架,最好添加一個(gè)方法前綴
 */

 // 將所有計(jì)算代碼放到這里

+(int)zs_makeCalculate:(void(^)(CalculateManager *))block;
  • 3、 此時(shí)需要一個(gè) 管理者CalculateManager

    • 繼承NSObject
    • 但沒有實(shí)現(xiàn)里面具體方法,只是先創(chuàng)建
    • CalculateManager.h 導(dǎo)入到NSObject+Calculate.h
  • 4、來到viewController.m中玫坛,看外界是如何調(diào)用的

    • 傳管理者mgr
    • 調(diào)用管理者的計(jì)算方法,所以需要在CalculateManager 里添加add方法
[NSObject zs_makeCalculate:^(CalculateManager *mgr){

  mgr.add(5)
}
    
  • 5包晰、在CalculateManager 添加add方法,

CalculateManager.h中添加方法湿镀,同時(shí)提供一個(gè)屬性result炕吸,將CalculateManager計(jì)算的結(jié)果保存在result

@property (nonatomic ,assign) int result;

-(CalculateManager *(^)(int))add;

CalculateManager.m中實(shí)現(xiàn)方法,如果不寫return self;,只能(·)點(diǎn)一次勉痴,而且返回的類必須是CalculateManager本身赫模,所以block返回的類型是CalculateManager

-(CalculateManager * (^)(int))add
{
    
    return ^(int value){
        
        _result +=value;
        return self;
        
    };
}

  • 6、上述一直沒有調(diào)用block蒸矛,在第四步時(shí)瀑罗,只是傳進(jìn)去block。所以在NSObject+Calculate.m中實(shí)現(xiàn)調(diào)用方法
+(int)zs_makeCalculate:(void(^)(CalculateManager *))block

{
    // 創(chuàng)建文件管理者
    CalculateManager *mgr = [[CalculateManager alloc] init];
    
    block(mgr);
    
    return mgr.result;
  }  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雏掠,一起剝皮案震驚了整個(gè)濱河市斩祭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乡话,老刑警劉巖摧玫,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绑青,居然都是意外死亡席赂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門时迫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谓晌,你說我怎么就攤上這事掠拳。” “怎么了纸肉?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵溺欧,是天一觀的道長。 經(jīng)常有香客問我柏肪,道長姐刁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任烦味,我火速辦了婚禮聂使,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谬俄。我一直安慰自己柏靶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布溃论。 她就那樣靜靜地躺著屎蜓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钥勋。 梳的紋絲不亂的頭發(fā)上炬转,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天辆苔,我揣著相機(jī)與錄音,去河邊找鬼扼劈。 笑死驻啤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的测僵。 我是一名探鬼主播街佑,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼捍靠!你這毒婦竟也來了沐旨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤榨婆,失蹤者是張志新(化名)和其女友劉穎磁携,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體良风,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谊迄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烟央。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片统诺。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖疑俭,靈堂內(nèi)的尸體忽然破棺而出粮呢,到底是詐尸還是另有隱情,我是刑警寧澤钞艇,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布啄寡,位于F島的核電站,受9級(jí)特大地震影響哩照,放射性物質(zhì)發(fā)生泄漏挺物。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一飘弧、第九天 我趴在偏房一處隱蔽的房頂上張望识藤。 院中可真熱鬧,春花似錦次伶、人聲如沸蹋岩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剪个。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扣囊,已是汗流浹背乎折。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侵歇,地道東北人骂澄。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像惕虑,于是被迫代替她去往敵國和親坟冲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容