iOS开发之--Masonry多个平均布局
使用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多个平均布局的更多相关文章
- IOS开发之——Masonry 只支持OC,暂不支持swift
前言 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时 ...
- iOS开发之使用UIView-Positioning简化页面布局
使用过代码布局的人可能会有这样的感觉,给控件设置frame的时候比较繁琐.最 近在Github上看到有一个UIView的一个分类UIView-Positioning,这个分类提供了一些属性,比如lef ...
- 写给IOS开发工程师的网页前端入门笔记
前言:作为IOS开发工程师,终会接触到网页前端开发,甚至可能会有 用HTML5开发IOS的app客户端的需求.比如现在上架的app就有比如理财类型的app有的就用HTML开发的,从理财类型的app需求 ...
- iOS开发小技巧 - runtime适配字体
iOS开发小技巧 - runtime适配字体 版权声明:本文为博主原创文章,未经博主允许不得转载,有问题可联系博主Email: liuyongjiesail@icloud.com 一个iOS开发项目无 ...
- iOS开发-Masonry简易教程
关于iOS布局自动iPhone6之后就是AutoLayOut,AutoLayOut固然非常好用,不过有时候我们需要在页面手动进行页面布局,VFL算是一种选择,如果对VFL不是很熟悉可以参考iOS开发- ...
- iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry)
iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry) 随着iPhone6/6+设备的上市,如何让手头上的APP适配多种机型多种屏幕尺寸变得尤为迫 ...
- iOS开发针对对Masonry下的FPS优化讨论
今天博客的内容就系统的讨论一下Masonry对FSP的影响,以及如何更好的使用Masonry.如果你对iOS开发足够熟悉的话,那么对Masonry框架应该不陌生.简单的说,Masonry的诞生让Aut ...
- iOS 开发 ZFUI framework控件,使布局更简单
来自:http://www.jianshu.com/p/bcf86b170d9c 前言 为什么会写这个?因为在iOS开发中,界面的布局一直没有Android布局有那么多的方法和优势,我个人开发都是纯代 ...
- IOS开发之绝对布局和相对布局(屏幕适配)
之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下 ...
随机推荐
- show full processlist
mysql 显示哪些线程正在运行: show full processlist; 如果mysql 发生了锁表的情况,这个命令很容易知道是哪个表被什么操作锁住了
- python之继承与派生
1 继承 继承的概念:继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继承 继 ...
- 【二维树状数组】计数问题 @JSOI2009/upcexam5911
时间限制: 1 Sec 内存限制: 128 MB 题目描述 一个n*m的方格,初始时每个格子有一个整数权值.接下来每次有2种操作: 改变一个格子的权值: 求一个子矩阵中某种特定权值出现的个数. 输入 ...
- C# RabbitMQ优先级队列实战项目演练
一.需求背景 当用户在商城上进行下单支付,针对客户等级的不同和订单金额的大小划分客户级别,需要优先处理给标识为大订单的客户发送一份订单邮件提醒.那么我们应用程序如何解决这样的需求场景呢?今天阿笨给大家 ...
- 让Linux系统开机速度更快的方法
进行 Linux 内核与固件开发的时候,往往需要多次的重启,会浪费大把的时间. 在所有我拥有或使用过的电脑中,启动最快的那台是 20 世纪 80 年代的电脑.在你把手从电源键移到键盘上的时候,BASI ...
- 推荐系统算法学习(一)——协同过滤(CF) MF FM FFM
https://blog.csdn.net/qq_23269761/article/details/81355383 1.协同过滤(CF)[基于内存的协同过滤] 优点:简单,可解释 缺点:在稀疏情况下 ...
- 大疆无人机M100相关问题解决过程
1.遥控器升级问题 iOS端使用app升级,重复尝试了5次+,还是无法升级.卸载app重新安装,依旧是无法升级.使用Android app升级,一次搞定. 2.飞行器固件升级(云台别选错了) http ...
- C# string 是不可变的,指什么不可变
String 表示文本,即一系列 Unicode 字符.字符串是 Unicode 字符的有序集合,用于表示文本.String 对象是 System.Char 对象的有序集合,用于表示字符串.Strin ...
- Linux 互斥锁
互斥的概念 在多线程编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性. 每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻, 只能有一个线程访问该 ...
- android Glide简单使用
版权声明:大家可以转载,请写明转载申明 https://blog.csdn.net/bzlj2912009596/article/details/81702367 今天,简单讲讲Android里Gli ...