使用Masonry平均布局,代码如下:

其实就是用Masonry提供的两个方法,如下:

/**
* distribute with fixed spacing
*
* @param axisType 横排还是竖排
* @param fixedSpacing 两个控件间隔
* @param leadSpacing 第一个控件与边缘的间隔
* @param tailSpacing 最后一个控件与边缘的间隔
*/
[tolAry mas_distributeViewsAlongAxis:MASAxisTypeVertical withFixedSpacing: leadSpacing: tailSpacing:]; /**
* distribute with fixed item size
*
* @param axisType 横排还是竖排
* @param fixedItemLength 控件的宽或高
* @param leadSpacing 第一个控件与边缘的间隔
* @param tailSpacing 最后一个控件与边缘的间隔
*/
[tolAry mas_distributeViewsAlongAxis:MASAxisTypeVertical withFixedItemLength: leadSpacing: tailSpacing:];

一、水平布局

1、创建

//    图片组数
NSArray *imgAry = @[@"home_icon01",@"home_icon02",@"home_icon03",@"home_icon04"];
// 文字数字
NSArray *titleAry = @[@"高额",@"低息",@"灵活",@"便捷"]; NSMutableArray *tolAry = [NSMutableArray new];
for (int i = ; i < ; i ++) {
HTVerticalButton *btn = [HTVerticalButton buttonWithType:UIButtonTypeCustom];
[btn setImage:[UIImage imageNamed:imgAry[i]] forState:UIControlStateNormal];
[btn setTitle:titleAry[i] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor colorWithHex:@"#333333"] forState:UIControlStateNormal];
btn.titleLabel.font = [UIFont systemFontOfSize:];
btn.imageEdgeInsets = UIEdgeInsetsMake(, , , );
[self addSubview:btn];
[tolAry addObject:btn];
}

2、使用Masonry布局

//水平方向控件间隔固定等间隔
[tolAry mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing: leadSpacing: tailSpacing:];
[tolAry mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(@);
make.height.equalTo(@);
}]; //水平方向宽度固定等间隔
[tolAry mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedItemLength: leadSpacing: tailSpacing:];
[tolAry mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(@);
make.height.equalTo(@);
}];

效果如下:

二、垂直布局,不多阐述,直接上代码:

UIView *view = [UIView new];
view.backgroundColor = [UIColor yellowColor];
[self.view addSubview:view]; [view mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo();
make.left.mas_equalTo();
make.centerX.mas_equalTo(self.view);
make.height.mas_equalTo(*);
}]; NSMutableArray *tolAry = [NSMutableArray new];//图片数组
NSMutableArray *titleAry = [NSMutableArray new];//标题数组
NSMutableArray *btnAry = [NSMutableArray new];//按钮数组 for (int i = ; i < ; i ++) {
UIImageView *img = [UIImageView new];
img.backgroundColor = [UIColor redColor];
[view addSubview:img]; UILabel *lab = [UILabel new];
lab.backgroundColor = [UIColor purpleColor];
[view addSubview:lab]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.backgroundColor = [UIColor greenColor];
[btn setTitle:[NSString stringWithFormat:@"%d",i+] forState:UIControlStateNormal];
[view addSubview:btn]; [tolAry addObject:img];
[titleAry addObject:lab];
[btnAry addObject:btn];
} // 实现masonry垂直方向固定控件高度方法
//垂直方向
[tolAry mas_distributeViewsAlongAxis:MASAxisTypeVertical withFixedSpacing: leadSpacing: tailSpacing:]; [tolAry mas_makeConstraints:^(MASConstraintMaker *make) { //垂直方向可以设置水平居中
make.left.mas_equalTo();
make.width.equalTo(@);
}]; [titleAry mas_distributeViewsAlongAxis:MASAxisTypeVertical withFixedSpacing: leadSpacing: tailSpacing:]; [titleAry mas_makeConstraints:^(MASConstraintMaker *make) { //垂直方向可以设置水平居中
make.left.mas_equalTo();
make.width.equalTo(@);
}]; [btnAry mas_distributeViewsAlongAxis:MASAxisTypeVertical withFixedSpacing: leadSpacing: tailSpacing:]; [btnAry mas_makeConstraints:^(MASConstraintMaker *make) { //垂直方向可以设置水平居中
make.right.mas_equalTo(-);
make.width.equalTo(@);
}];

效果如下图:

仅做记录!

iOS开发之--Masonry多个平均布局的更多相关文章

  1. IOS开发之——Masonry 只支持OC,暂不支持swift

    前言 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时 ...

  2. iOS开发之使用UIView-Positioning简化页面布局

    使用过代码布局的人可能会有这样的感觉,给控件设置frame的时候比较繁琐.最 近在Github上看到有一个UIView的一个分类UIView-Positioning,这个分类提供了一些属性,比如lef ...

  3. 写给IOS开发工程师的网页前端入门笔记

    前言:作为IOS开发工程师,终会接触到网页前端开发,甚至可能会有 用HTML5开发IOS的app客户端的需求.比如现在上架的app就有比如理财类型的app有的就用HTML开发的,从理财类型的app需求 ...

  4. iOS开发小技巧 - runtime适配字体

    iOS开发小技巧 - runtime适配字体 版权声明:本文为博主原创文章,未经博主允许不得转载,有问题可联系博主Email: liuyongjiesail@icloud.com 一个iOS开发项目无 ...

  5. iOS开发-Masonry简易教程

    关于iOS布局自动iPhone6之后就是AutoLayOut,AutoLayOut固然非常好用,不过有时候我们需要在页面手动进行页面布局,VFL算是一种选择,如果对VFL不是很熟悉可以参考iOS开发- ...

  6. iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry)

    iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry) 随着iPhone6/6+设备的上市,如何让手头上的APP适配多种机型多种屏幕尺寸变得尤为迫 ...

  7. iOS开发针对对Masonry下的FPS优化讨论

    今天博客的内容就系统的讨论一下Masonry对FSP的影响,以及如何更好的使用Masonry.如果你对iOS开发足够熟悉的话,那么对Masonry框架应该不陌生.简单的说,Masonry的诞生让Aut ...

  8. iOS 开发 ZFUI framework控件,使布局更简单

    来自:http://www.jianshu.com/p/bcf86b170d9c 前言 为什么会写这个?因为在iOS开发中,界面的布局一直没有Android布局有那么多的方法和优势,我个人开发都是纯代 ...

  9. IOS开发之绝对布局和相对布局(屏幕适配)

    之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下 ...

随机推荐

  1. day8网络编程,面向对象1

    一.只是回顾 1.导入模块的顺序,首先从当前目录下找,再从环境变量里面找,使用"sys.path.insert(0,'需要导入的环境变量')"加入需要导入文件的环境变量; 2.如果 ...

  2. 关于js函数对象的理解

    js中函数和对象的关系: 什么是对象?根据W3C上面的解释JS中所有事物都是对象,对象是拥有属性和方法的数据,由此可以看出除了基 本值类型不是对象(number.string.Boolean.Unde ...

  3. ‘百度杯’十月场web ---login

    首先一看的题,既然是是web类的,就要查看源码,一看,最先有一行注释,估摸着是用户名和密码 果然登录上去了,显示一段乱码,源码也没有什么东西, 那就抓一次包吧 发现响应头里边有个show:0的响应,而 ...

  4. 基于SwiperJs的H5/移动端下拉刷新上拉加载更多

    最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...

  5. ASP.NET WebApi服务接口如何防止重复请求实现HTTP幂等性

    一.背景描述与课程介绍 明人不说暗话,跟着阿笨一起玩WebApi.在我们平时开发项目中可能会出现下面这些情况; 1).由于用户误操作,多次点击网页表单提交按钮.由于网速等原因造成页面卡顿,用户重复刷新 ...

  6. 倾斜摄影数据OSGB进入到ArcGIS平台相关问题小结

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zglybl/article/details/75252288      随着倾斜摄影技术的发展,大家 ...

  7. ABAP表生成Java实体Bean

    项目中需要将HR模块中的表数据同步到Java系统中,向外围系统提供分发与查询服务,涉及到的表有两百多张,字段好几千上万个,如果手工一张张这些ABAP表在Java系统数据库中创建一遍的话,工作量将非常大 ...

  8. PLC是嵌入式系统吗?【转】

    PLC是嵌入式系统吗? 一.PLC即Programmable Logic Controller,可编程逻辑控制器 单片机又名MCU即microprocessor control unit,微处理机控制 ...

  9. java-Freemarker TemplateLoader实现模版

    TemplateLoader的实现 作为一个模板文件加载的抽象,自然不能限制模板来自何方,在FreeMarker中由几个主要的实现类来体现,这些TemplateLoader是可以独立使用的,Webap ...

  10. 修改Electron的libcc(libchromiumcontent)源码,重新编译electron, 设置event.isTrusted为true

    VPN非常注意: 编译的过程需要使用VPN, 否者chromium的源代码无法下载, 后面会出现总总问题 Electron的编译环境, 推荐使用物理机: win10 64位 英文版, 为了避免后期出现 ...