iOS小笔记之 等间距创建控件

2020-08-13  本文已影响0人  小码honey

相信大部分的项目中都集成了masonry这个三方库,实际使用中,除了最常用对某一控件的自动布局之外,还有很多隐藏的好方法,比如mas_distributeViewsAlongAxis
只怪自己学艺不精,好多基础的东西现在才开始重视

还是贴代码吧,做个小结

    UIView *functionView = [[UIView alloc]init];
     functionView.backgroundColor = [UIColor whiteColor];
     [self.view addSubview:functionView];
      [functionView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.bottom. equalTo(self.view);
        make.height.mas_equalTo(KTabBarHeight);
      }];

这是底层view,在上面创建三个普通按钮

    NSArray * titleArr = @[@"编辑小题",@"编辑作业",@"匹配"];
    NSMutableArray * buttonArray = [NSMutableArray array];
    for (NSInteger i = 0 ; i < titleArr.count; i ++) {
        XKCCEditButton * btn = [[XKCCEditButton alloc] init];
        [functionView addSubview:btn];
        btn.title =titleArr[i];
        btn.tag = i + buttonTag;
        [btn addTarget:self action:@selector(editButtonClick:)           forControlEvents:UIControlEventTouchUpInside];
        if (i == titleArr.count - 1) {
            btn.backgroundColor = UIColor.redColor;
        }
        [buttonArray addObject:btn];
    }

设置布局

    //按钮等间距排列
    [buttonArray mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:10 leadSpacing:KMargin tailSpacing:KMargin];
    [buttonArray mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(functionView.mas_centerY);
        make.height.mas_equalTo(KTITLE_HEIGHT);
    }];

四个参数
第一个枚举值,用来确定水平、垂直方向

typedef NS_ENUM(NSUInteger, MASAxisType) {
    MASAxisTypeHorizontal, 
    MASAxisTypeVertical
};

第二个参数,各控件间距
(CGFloat)fixedSpacing
后面两个参数分别是距左/右、上/下,距离
(CGFloat)leadSpacing (CGFloat)tailSpacing

特别提示:

这个方法的数组元素个数必须大于等于2,否则没有效果,masonry源码部分:

if (self.count < 2) {
        NSAssert(self.count>1,@"views to distribute need to bigger than one");
        return;
    }
··· 其他代码

关于该方法更详细解释,这边集合iOS Masonry 等间隔或等宽高排列多个控件

上一篇下一篇

猜你喜欢

热点阅读