数字 等宽 ios html5,iOS Masonry 等间隔或等宽高排列多个控件

本文介绍Masonry提供的两个布局API:固定间隔布局与固定尺寸布局。通过实例演示如何使用这两个API来实现不同方向上的视图排列,并附带展示了具体的代码实现。

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

masonry 目前提供了相应的接口,直接使用即可,这里记录或许可以提醒某些不知道的人罢了!

一、先解释相关API

/**

* distribute with fixed spacing

*

* @param axisType 横排还是竖排

* @param fixedSpacing 两个控件间隔

* @param leadSpacing 第一个控件与边缘的间隔

* @param tailSpacing 最后一个控件与边缘的间隔

*/

- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;

/**

* distribute with fixed item size

*

* @param axisType 横排还是竖排

* @param fixedItemLength 控件的宽或高

* @param leadSpacing 第一个控件与边缘的间隔

* @param tailSpacing 最后一个控件与边缘的间隔

*/

- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;

两个API,分为固定间隔不固定宽高,固定宽高不固定间隔,根据具体需求使用相应的即可。

需要注意的是: 横排的时候要相应设置控件数组的垂直约束,竖排的时候要相应设置控件数字的水平约束。

二、具体实践测试

首先做准备工作,先生成四个View(需要被排列的),代码如下:

- (NSMutableArray *)masonryViewArray {

if (!_masonryViewArray) {

_masonryViewArray = [NSMutableArray array];

for (int i = 0; i < 4; i ++) {

UIView *view = [[UIView alloc] init];

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

[_masonryViewArray addObject:view];

}

}

return _masonryViewArray;

}

1、水平方向排列、固定控件间隔、控件长度不定

测试代码如下

- (void)test_masonry_horizontal_fixSpace {

// 实现masonry水平固定间隔方法

[self.masonryViewArray mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:30 leadSpacing:10 tailSpacing:10];

// 设置array的垂直方向的约束

[self.masonryViewArray mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.equalTo(150);

make.height.equalTo(80);

}];

}

测试结果如下:

25977be007f7

2、水平方向排列、固定控件长度、控件间隔不定

代码如下:

- (void)test_masonry_horizontal_fixItemWidth {

// 实现masonry水平固定控件宽度方法

[self.masonryViewArray mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedItemLength:80 leadSpacing:10 tailSpacing:10];

// 设置array的垂直方向的约束

[self.masonryViewArray mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.equalTo(150);

make.height.equalTo(80);

}];

}

测试结果如下:

25977be007f7

3、垂直方向排列、固定控件间隔、控件高度不定

代码如下:

- (void)test_masonry_vertical_fixSpace {

// 实现masonry垂直固定控件高度方法

[self.masonryViewArray mas_distributeViewsAlongAxis:MASAxisTypeVertical withFixedSpacing:30 leadSpacing:10 tailSpacing:10];

// 设置array的水平方向的约束

[self.masonryViewArray mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(150);

make.width.equalTo(80);

}];

}

结果如下:

25977be007f7

4、垂直方向排列、固定控件高度、控件间隔不定

- (void)test_masonry_vertical_fixItemWidth {

// 实现masonry垂直方向固定控件高度方法

[self.masonryViewArray mas_distributeViewsAlongAxis:MASAxisTypeVertical withFixedItemLength:80 leadSpacing:10 tailSpacing:10];

// 设置array的水平方向的约束

[self.masonryViewArray mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(150);

make.width.equalTo(80);

}];

}

结果如下:

25977be007f7

三、完毕

最近愈发的懒了,写个博客提提神,找找感觉,这大好的青春啊!可不能浪费了!

我本放荡不羁爱自由,奈何$%&@*&&%!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值