Masonry實踐

上一章的登陸頁我用Masonry重新實現(xiàn),我想比較一下auto layout和Masonry布局的區(qū)別,就我個人而言,我覺的用代碼實現(xiàn)還是比較好一點。

這是我要在項目中用到的兩個宏:

/** 主屏幕的寬度比例 */

#define YC_M_SCREEN_W_SCALE (YC_M_SCREEN_W/320)

/** 按寬度去適配 */

#define kScaleFrom_iPhone5_Desgin(_X_) (_X_ * YC_M_SCREEN_W_SCALE)

主要的代碼實現(xiàn),如果不太懂可以看看上一篇的效果圖,這樣容易理解:

#pragma mark -- Private method

- (void)initViewLayout {

//1.背景圖

UIImageView *backgroundImageView = [UIImageView new];

backgroundImageView.image = [UIImage imageNamed:@"底圖"];

[self.view addSubview:backgroundImageView];

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

make.edges.equalTo(self.view);

}];

//2.logo圖標(biāo)

UIImageView *logoImageView = [UIImageView new];

logoImageView.image = [UIImage imageNamed:@"獎懲戳"];

//? ? [logoImageView sd_setImageWithURL:[NSURL URLWithString:@"https://www.baidu.com/img/bd_logo1.png"] placeholderImage:nil];

//? ? [self.view addSubview:logoImageView];

[logoImageView mas_makeConstraints:^(MASConstraintMaker *make) {

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

make.top.equalTo(self.view.mas_top).with.offset(kScaleFrom_iPhone5_Desgin(30));

make.width.equalTo(@kScaleFrom_iPhone5_Desgin(180));

make.height.equalTo(@kScaleFrom_iPhone5_Desgin(180));

}];

//3.公司名字

UIImageView *companyImageView = [UIImageView new];

companyImageView.image = [UIImage imageNamed:@"bottom"];

[self.view addSubview:companyImageView];

[companyImageView mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(self.view.mas_left).with.offset(10);

make.right.equalTo(self.view.mas_right).with.offset(-10);

make.bottom.equalTo(self.view.mas_bottom);

make.height.equalTo(@30);

}];

//4.輸入框容器視圖

UIView *inputContainerView = [UIView new];

inputContainerView.backgroundColor = [UIColor clearColor];

[self.view addSubview:inputContainerView];

[inputContainerView mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(self.view.mas_left).with.offset(10);

make.right.equalTo(self.view.mas_right).with.offset(-10);

make.top.equalTo(logoImageView.mas_bottom).with.offset(kScaleFrom_iPhone5_Desgin(20));

make.bottom.equalTo(companyImageView.mas_top).with.offset(kScaleFrom_iPhone5_Desgin(-15));

}];

//4.輸入框容器視圖背景圖

UIImageView *inputImageView = [UIImageView new];

inputImageView.image = [UIImage imageNamed:@"backgroundImage"];

[inputContainerView addSubview:inputImageView];

[inputImageView mas_makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(inputContainerView);

}];

//5.輸入框用戶名

UITextField *userName = [UITextField new];

userName.background = [UIImage imageNamed:@"textfieldBackgroundImage"];

userName.placeholder =@"請輸入用戶名";

userName.font = [UIFont systemFontOfSize:18];

[inputContainerView addSubview:userName];

[userName mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(inputContainerView.mas_left).with.offset(5);

make.right.equalTo(inputContainerView.mas_right).with.offset(-5);

make.top.equalTo(inputContainerView.mas_top).with.offset(kScaleFrom_iPhone5_Desgin(15));

make.height.equalTo(@kScaleFrom_iPhone5_Desgin(40));

}];

//6.輸入框用戶名

UITextField *password = [UITextField new];

password.background = [UIImage imageNamed:@"textfieldBackgroundImage"];

password.placeholder =@"請輸入密碼";

password.font = [UIFont systemFontOfSize:18];

[inputContainerView addSubview:password];

[password mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(inputContainerView.mas_left).with.offset(5);

make.right.equalTo(inputContainerView.mas_right).with.offset(-5);

make.top.equalTo(userName.mas_bottom).with.offset(kScaleFrom_iPhone5_Desgin(15));

make.height.equalTo(@kScaleFrom_iPhone5_Desgin(40));

}];

//7.登陸

UIButton *loginBtn = [UIButton buttonWithType:UIButtonTypeCustom];

[loginBtn setBackgroundImage:[UIImage imageNamed:@"登錄"] forState:UIControlStateNormal];

[loginBtn addTarget:self action:@selector(loginBtnClick:) forControlEvents:UIControlEventTouchUpInside];

[inputContainerView addSubview:loginBtn];

[loginBtn mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(inputContainerView.mas_left).with.offset(5);

make.right.equalTo(inputContainerView.mas_right).with.offset(-5);

make.top.equalTo(password.mas_bottom).with.offset(kScaleFrom_iPhone5_Desgin(15));

make.height.equalTo(@kScaleFrom_iPhone5_Desgin(45));

}];

//8.記住密碼

UILabel *remeberPassword = [UILabel new];

remeberPassword.backgroundColor = [UIColor clearColor];

remeberPassword.font = [UIFont systemFontOfSize:14];

remeberPassword.textColor = [UIColor brownColor];

remeberPassword.text = @"記住密碼";

[inputContainerView addSubview:remeberPassword];

[remeberPassword mas_makeConstraints:^(MASConstraintMaker *make) {

make.height.equalTo(@24);

make.width.equalTo(@60);

make.top.equalTo(loginBtn.mas_bottom).with.offset(kScaleFrom_iPhone5_Desgin(10));

make.right.equalTo(inputContainerView.mas_right).with.offset(-5);

}];

UIButton *remeberBtn = [UIButton buttonWithType:UIButtonTypeCustom];

[remeberBtn setBackgroundImage:[UIImage imageNamed:@"圓角矩形1"] forState:UIControlStateNormal];

[remeberBtn setBackgroundImage:[UIImage imageNamed:@"圓角矩形2"] forState:UIControlStateSelected];

[remeberBtn addTarget:self action:@selector(remeberBtnClick:) forControlEvents:UIControlEventTouchUpInside];

[inputContainerView addSubview:remeberBtn];

[remeberBtn mas_makeConstraints:^(MASConstraintMaker *make) {

make.height.equalTo(@24);

make.width.equalTo(@24);

make.top.equalTo(loginBtn.mas_bottom).with.offset(kScaleFrom_iPhone5_Desgin(10));

make.right.equalTo(remeberPassword.mas_left).with.offset(-5);

}];

}

github地址:https://github.com/JohnJin007/MyProjectDemo

最后編輯于
?著作權(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)容

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