美文网首页
项目总结 - Massonry 实现 按钮的排列

项目总结 - Massonry 实现 按钮的排列

作者: 我有一只小毛驴_从来都不骑 | 来源:发表于2016-12-19 16:57 被阅读75次

通常我们用 frame 进行button 的这样排列 很容易,这次心血来潮用Massonry来进行这样的约束

//记录上一个按钮
    UIButton *lastBUtton = nil;
    for (int i = 0; i < 8; i++) {
        
        XBButton *button = [XBButton buttonWithType:UIButtonTypeCustom];
        [button addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];
        button.adjustsImageWhenHighlighted = NO;
        NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"]];
        
        NSMutableArray *shopArray = [NSMutableArray array];
        for (NSDictionary *dict in dictArray) {
            HomeShop *shop = [HomeShop shopWithDict:dict];
            [shopArray addObject:shop];
        }
        button.shop = shopArray[i];
        
        
        button.titleLabel.font = [UIFont systemFontOfSize:11];
        
        [button setTitleColor:[UIColor blackColor]forState:UIControlStateNormal];
        button. contentHorizontalAlignment =UIControlContentHorizontalAlignmentCenter;
        
        [buttonView addSubview:button];
        
        [button mas_makeConstraints:^(MASConstraintMaker *make) {
            //设置高度
            make.height.offset(60.0f);
            float colTop = (10 + i/4 * 70.0f);
            make.top.offset(colTop);
            
            //当是 左边一列的时候 都是 距离父视图 向左边 10的间隔
            if (i%4 == 0) {
                make.left.offset(10.0f);
                //   make.width.offset(50.0f);
                
            }else{
                //当时中间列的时候 在上一个UIlabel的右边 添加10个 距离 并且设置等高
                make.width.equalTo(lastBUtton.mas_width);
                make.left.equalTo(lastBUtton.mas_right).offset(10.0f);
            }
            //当是 最右边列的时候 距离右边父视图的 距离为20  因为是向左所以是-20  控制底部也是 负数!!
            if (i%4 == 3) {
                make.right.offset(-10.0f);
                
            }
        }];
        
        lastBUtton = button;
        
    }
    

我这按钮 图片在上 文字在下 是自定义的按钮 自己写一个类 继承UIButton

-(void)layoutSubviews{
    [super layoutSubviews];
//     调整图片

    self.imageView.y = 0;
    self.imageView.width = 40 ;
    self.imageView.height = 40;
    self.imageView.centerX = self.width/2;

    // 调整文字
    self.titleLabel.y = CGRectGetMaxY(self.imageView.frame);
    self.titleLabel.width = self.width;
    self.titleLabel.height = self.height - self.imageView.height;
    self.titleLabel.centerX = self.imageView.centerX ;
}

这个self.imageView.centerX self.titleLabel.centerX的 赋值一定要在height的后面,否则会出现 当你点击button的时候 图片会向左偏移
不点击的时候 显示正常


也就是这种情况

相关文章

  • 项目总结 - Massonry 实现 按钮的排列

    通常我们用 frame 进行button 的这样排列 很容易,这次心血来潮用Massonry来进行这样的约束 我这...

  • element UI Table组件内el-dropdown 多

    效果 左侧多按钮排列 右侧的下拉收纳。看项目需求和个人喜好吧。本问主要记录如何通过el-dropdown实现右侧的...

  • Massonry 的原理

    首先总结一下心得:我发现看Massonry的框架,并不像看AFNetworking SDWebImage 那...

  • Tailwind Button

    按钮组 源代码查看地址 按钮组是由多个按钮水平排列而成,实现方式可分为两种,一种是依次设置左中右按钮的边框,一种是...

  • iOS 自定义键盘字母按钮

    最近项目有个需求24个按钮, 排列像键盘一样,获取字母进行索引搜索单词, 那就for循环添加 按钮吧, 这是封装的...

  • iOS点击按钮的弹出动画

    最近项目中需要实现点击按钮弹出另外两个按钮,下面纪录下我的实现过程先上效果: 代码如下:

  • P254-字符串的排列

    排列总结: 字符串的全排列和组合算法 1.递归实现 2.非递归实现 qsort函数、sort函数 (精心整理篇) ...

  • iOS 13.0 添加UISegmentedControl 对图

    项目中经常遇到这种分割线隔开的分段按钮视图,将完美的实现方式总结记录一下(可以自定义视图,添加子视图的方式实现,但...

  • 按钮组 - Button Groups

    水平按钮组 将按钮包含在 .btn-group 样式的容器内,即可创建按钮组 垂直按钮组 按钮组也可以垂直排列 按...

  • POP的按钮动画

    POP按钮动画 ps:长按按钮显示底层图片,松开隐藏 一、总结 通过实现pop动画代理 设置view的透明度。一次...

网友评论

      本文标题:项目总结 - Massonry 实现 按钮的排列

      本文链接:https://www.haomeiwen.com/subject/fkptvttx.html