【Masonry】使用技巧 - 篇一

本文介绍了一种使用Masonry框架在iOS中布局按钮的方法,通过四个步骤完成按钮的创建与约束设置,展示了如何利用颜色、字体及事件响应来定制按钮样式,以及如何运用约束实现灵活的界面布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从别人项目得到的灵感 : 请看以下代码 

 1 UIColor *darkColor = [UIColor colorWithHexString:@"0x28303b"];
    // 1. 确定宽高
2 CGFloat buttonWidth = kScreen_Width * 0.4; 3 CGFloat buttonHeight = kScaleFrom_iPhone5_Desgin(38); 6

    // 2. 设置按钮基本属性 7 self.registerBtn = ({ 8 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 9 [button addTarget:self action:@selector(registerBtnClicked) forControlEvents:UIControlEventTouchUpInside]; 10 11 button.backgroundColor = darkColor; 12 button.titleLabel.font = [UIFont boldSystemFontOfSize:20]; 13 [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 14 [button setTitle:@"注册" forState:UIControlStateNormal]; 15 16 button.layer.masksToBounds = YES; 17 button.layer.cornerRadius = buttonHeight/2; 18 button; 19 }); 20 self.loginBtn = ({ 21 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 22 [button addTarget:self action:@selector(loginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; 23 24 button.backgroundColor = [UIColor clearColor]; 25 button.titleLabel.font = [UIFont boldSystemFontOfSize:20]; 26 [button setTitleColor:darkColor forState:UIControlStateNormal]; 27 [button setTitle:@"登录" forState:UIControlStateNormal]; 28 29 button.layer.masksToBounds = YES; 30 button.layer.cornerRadius = buttonHeight/2; 31 button.layer.borderWidth = 1.0; 32 button.layer.borderColor = darkColor.CGColor; 33 button; 34 }); 35
    // 3.添加控件 36 [self.view addSubview:self.registerBtn]; 37 [self.view addSubview:self.loginBtn]; 38
    // 4.设置约束 39 [self.registerBtn mas_makeConstraints:^(MASConstraintMaker *make) { 40 make.size.mas_equalTo(CGSizeMake(buttonWidth, buttonHeight)); 41 make.right.equalTo(self.view.mas_centerX).offset(-paddingToCenter); 42 make.bottom.equalTo(self.view).offset(-paddingToBottom); 43 }]; 44 [self.loginBtn mas_makeConstraints:^(MASConstraintMaker *make) { 45 make.size.mas_equalTo(CGSizeMake(buttonWidth, buttonHeight)); 46 make.left.equalTo(self.view.mas_centerX).offset(paddingToCenter); 47 make.bottom.equalTo(self.view).offset(-paddingToBottom); 48 }];

 

四部曲,一气呵成, 语义也非常清晰.

接下来可以详细看看Masonry框架的用法. 

总的来说,我觉得Autolayout的关键就是“Constraint(约束)”。其实就是以下两点:

  1. 从显式设置frame的属性,到利用约束控制View的大小、位置。
  2. 思考如何布局时,重点从单个的View,到整体所有View之间的相互关系。

既然没有了具体设置View的frame属性,也就是说,系统会在运行时,通过我们设定的“约束”,计算出每个View的frame,再去绘制屏幕内容。

也就是说,我们设置的Constraint,要能体现出View的位置(x、y坐标)大小(宽高)

所以千言万语就是一句话 , 想想你的UI是怎样设定Frame的

 

 

解释一些句子 : 

 

 

转载于:https://www.cnblogs.com/cwllong/p/5229995.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值