0
点赞
收藏
分享

微信扫一扫

masonry 高级用法之布局多个button

扒皮狼 2021-09-29 阅读 39
iOS OC开发
大家可以把以下方法拷贝到项目中去运行一下看看效果,也可以在github上下载我的demo工程运行看一下。

https://github.com/624990742/DiaosiYeMeErDemo.git

/**
 *  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分别为:
一、水平方向
1、水平方向排列、固定控件间隔、控件长度不定
- (void)maseryHorizontalLayout1{
    
    NSMutableArray *testViewArr = [NSMutableArray array];
    
    for (NSInteger index = 0; index < 5; index ++) {
        
        UIView *testView  = [[UIView alloc] init];
        testView.backgroundColor = [UIColor RandomColor];//随机颜色
        [self addSubview:testView];
        [testViewArr addObject:testView];
        
            
        if (testViewArr.count == 5) {//必须在最后统一布局
           //FixedSpacing 水平左右间隔
           //leadSpacing  第一个item距离手机屏幕的距离
           //tailSpacing  最后一个item元素距离手机屏幕的距离
            [testViewArr mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:10 leadSpacing:10 tailSpacing:10];
            
            // 设置array的垂直方向的约束
            [testViewArr mas_makeConstraints:^(MASConstraintMaker *make) {
                make.top.equalTo(100);
                make.height.equalTo(100);
            }];
        }
    } 
}
2、水平方向排列、固定控件长度、控件间隔不定

- (void)maseryHorizontalLayout2{
    
    NSMutableArray *testViewArr = [NSMutableArray array];
    
    for (NSInteger index = 0; index < 5; index ++) {
        
        UIView *testView  = [[UIView alloc] init];
        testView.backgroundColor = [UIColor RandomColor];//随机颜色
        [self addSubview:testView];
        [testViewArr addObject:testView];
        
        
        if (testViewArr.count == 5) {//必须在最后统一布局
            //ItemLength  item元素的宽度
            //leadSpacing  第一个item距离手机屏幕的距离
            //tailSpacing  最后一个item元素距离手机屏幕的距离
        
            [testViewArr mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedItemLength:50 leadSpacing:10 tailSpacing:10];
            
            // 设置array的垂直方向的约束
            [testViewArr mas_makeConstraints:^(MASConstraintMaker *make) {
                
                make.top.equalTo(220);
                make.height.equalTo(100);
            }];
        }
    }    
}
二、垂直方方向
1、垂直方向排列、固定控件间隔、控件高度不定
-(void)maseryverticalLayout1{
    
    NSMutableArray *testViewArr = [NSMutableArray array];
    
    for (NSInteger index = 0; index < 5; index ++) {
        
        UIView *testView  = [[UIView alloc] init];
        testView.backgroundColor = [UIColor RandomColor];//随机颜色
        [self addSubview:testView];
        [testViewArr addObject:testView];
        
        
        if (testViewArr.count == 5) {//必须在最后统一布局
            //ItemLength  item元素的宽度
            //leadSpacing  第一个item距离手机屏幕的距离
            //tailSpacing  最后一个item元素距离手机屏幕的距离
            [testViewArr mas_distributeViewsAlongAxis:MASAxisTypeVertical withFixedItemLength:100 leadSpacing:10 tailSpacing:10];
            
            // 设置array的垂直方向的约束
            [testViewArr mas_makeConstraints:^(MASConstraintMaker *make) {
                make.left.equalTo(30);
                make.width.equalTo(80);
            }];
        }
    }
}
2、垂直方向排列、固定控件高度、控件间隔不定

-(void)maseryverticalLayout2{
    
    NSMutableArray *testViewArr = [NSMutableArray array];
    
    for (NSInteger index = 0; index < 5; index ++) {
        
        UIView *testView  = [[UIView alloc] init];
        testView.backgroundColor = [UIColor RandomColor];//随机颜色
        [self addSubview:testView];
        [testViewArr addObject:testView];
        
        
        if (testViewArr.count == 5) {//必须在最后统一布局
            //ItemLength  item元素的宽度
            //leadSpacing  第一个item距离手机屏幕的距离
            //tailSpacing  最后一个item元素距离手机屏幕的距离
    
            [testViewArr mas_distributeViewsAlongAxis:MASAxisTypeVertical withFixedItemLength:80 leadSpacing:10 tailSpacing:10];
            
            // 设置array的垂直方向的约束
            [testViewArr mas_makeConstraints:^(MASConstraintMaker *make) {
                
                make.left.equalTo(100);
                make.width.equalTo(80);
            }];
        }
    }
}
举报

相关推荐

0 条评论