多个label排版,动态长度及自动换行

      

我们在处理多个label自动排版的时候回遇到这个问题:

       1: label的长度随着字体的长度而变化

       2:如过一行放不下第二个label会自动换行

       像第一个问题还好处理一些,例如用masonary三方库适配的之后只约束它的left和top就可以解决,但是再加上多个label自动排版就相对来说复杂一些,小编来共享一下代码方便大家使用:

#pragma mark - 动态设置个性标签长度/换行

- (void)setDataArray:(NSMutableArray *)dataArray

{

    _dataArray = dataArray;

    float x =87;

    float y =20;

    int i =0;

    

        //根据字数设置label的宽度

    for (NSString *strin _dataArray) {

        //设置一个行高上限

        CGSize size =CGSizeMake(320,2000); 

        NSDictionary *attribute =@{NSFontAttributeName:[UIFontsystemFontOfSize:8]};

        CGSize labelsize = [strboundingRectWithSize:sizeoptions:NSStringDrawingTruncatesLastVisibleLine  attributes:attribute context:nil].size;

        if (kScreen_Width - x < labelsize.width +40)

        {

            x = 87;

            y += 24;

        }

        

        UILabel *label = [[UILabelalloc]initWithFrame:CGRectMake(x, y, labelsize.width + 40, 20)];

        label.backgroundColor =RGB(254,245, 205);

        [self.contentViewaddSubview:label];

        label.tag =8000 + i;


        label.text = str;

        label.font = [UIFontsystemFontOfSize:12];

        label.textColor =RGB(51,51, 51);

        label.textAlignment =UITextAlignmentCenter;

        x += label.frame.size.width +10;

        i++;

        //这里涉及到的内容是返回自定义高度

        _maxHeight = label.frame.origin.y;

    }

}

下面是自己写的一个完整demo,欢迎大家下载:

     http://download.csdn.net/detail/qq_20176153/9452966


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值