Masonry的基本使用及事件觸發(fā)更改控件約束

1. 使用CocoaPods導(dǎo)入

$ pod 'MJRefresh'?

2. 在項目中導(dǎo)入Masonry.h 文件

#import "Masonry.h"

3. ?示例:有 blueview redview ?changebtn 三個控件,按如圖1 排列


圖1

代碼如下:

?//Masonry的使用

主要用到 ?mas_makeConstraints /?mas_remakeConstraints方法

**** ?有一點需要注明,在使用masonry的方法前,一定要先把控件添加到父視圖,不然會發(fā)生崩潰,提示找不到父視圖?。?!

? ? blueview= [[UIViewalloc]init];

? ? blueview.backgroundColor = [UIColor blueColor];

? ? [self.view addSubview:blueview];

? ?redview= [[UIViewalloc]init];

? ? redview.backgroundColor = [UIColor redColor];

? ? [self.view addSubview:redview];

?? UIButton* changebtn = [[UIButtonalloc]init];

? ? changebtn.backgroundColor? = [UIColor greenColor];

? ? [self.view ?addSubview:changebtn];

? ? [changebtnaddTarget:nil action:@selector(changePosition) forControlEvents:UIControlEventTouchUpInside];

//blueview的約束

? ? [blueview mas_makeConstraints:^(MASConstraintMaker *make) {

? ? ? ? make.left.equalTo(self.view).offset(20);

? ? ? ? make.top.equalTo(self.view).offset(100);

? ? ? ? make.right.equalTo(self.view).offset(-20);

? ? ? ? make.height.equalTo(@50);

? ? }];

? ? //redview的約束

? ? [redview mas_makeConstraints:^(MASConstraintMaker *make) {

? ? ? ? make.left.equalTo(self->blueview.mas_centerX);

? ? ? ? make.top.equalTo(self->blueview.mas_bottom).offset(20);

? ? ? ? make.right.equalTo(self->blueview.mas_right);

? ? ? ? make.height.equalTo(self->blueview.mas_height);

? ? }];

? ?//changebtn的約束

? ? [changebtn mas_makeConstraints:^(MASConstraintMaker*make) {

? ? ? ? make.top.equalTo(self->redview.mas_bottom).offset(60);

? ? ? ? make.centerX.equalTo(self.view.mas_centerX);

? ? ? ? make.height.equalTo(self->blueview.mas_height);

? ? ? ? make.left.equalTo(self.view).offset(120);

? ?}];

4. 若想通過點擊按鈕,改變blueview redview 的位置,添加事件

使用 ?mas_remakeConstraints方法即可

- (void)changePosition{

? ? [redview mas_remakeConstraints:^(MASConstraintMaker *make) {

? ? ? ? make.left.equalTo(self.view).offset(20);

? ? ? ? make.top.equalTo(self.view).offset(100);

? ? ? ? make.right.equalTo(self.view).offset(-20);

? ? ? ? make.height.equalTo(@50);

? ? }];

? ? [blueview mas_remakeConstraints:^(MASConstraintMaker *make) {

? ? ? ? make.left.equalTo(self->redview.mas_centerX);

? ? ? ? make.top.equalTo(self->redview.mas_bottom).offset(20);

? ? ? ? make.right.equalTo(self->redview.mas_right);

? ? ? ? make.height.equalTo(self->redview.mas_height);

? ? }];

}

結(jié)果如圖2,changebtn的位置,我們不用管,大體看一下效果即可


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

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

  • iOS_autoLayout_Masonry 概述 Masonry是一個輕量級的布局框架與更好的包裝AutoLay...
    指尖的跳動閱讀 1,319評論 1 4
  • 因為之前開發(fā)時都是在xib文件中添加約束,或者代碼中計算frame并沒有接觸過Masonry,現(xiàn)在寫篇博客來歸納總...
    口子窖閱讀 6,611評論 1 4
  • Masonry是一個輕量級的布局框架,它擁有自己的描述語法(采用更優(yōu)雅的鏈?zhǔn)秸Z法封裝)來自動布局,具有很好可讀性且...
    AngeloD閱讀 3,540評論 0 9
  • (一)Masonry介紹 Masonry是一個輕量級的布局框架 擁有自己的描述語法 采用更優(yōu)雅的鏈?zhǔn)秸Z法封裝自動布...
    木易林1閱讀 2,582評論 0 3
  • Masonry是一個輕量級的布局框架,擁有自己的描述語法,采用更優(yōu)雅的鏈?zhǔn)秸Z法封裝自動布局,簡潔明了并具有高可讀性...
    3dcc6cf93bb5閱讀 1,936評論 0 1

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