添加多个UILabel,其中每个label有不同行

应用中有一个视图,我想设置一些标签,但是每个标签的数量和文本长度都不一样。

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 50)];
label.text = @"Varying text length here";
label.numberOfLines = 0;
[label sizeToFit];
[[self view] addSubview:label];

每个标签有1-4行,通过编程的方法添加新标签到现有标签下方,间距为25。不知道怎么实现?

这里只说对于一个标签的高度的判断,你可以根据第一个标签的高度去设置第二个标签的位置,LABLE_WIDTH标签的长度,FONT_SIZE标签中字体的大小。

int a=0;
NSString *s=@"aaaaaaasdgaiugfiafhoauifhowaruifhoauihgvabviapbviaudvbiadfuviufvapiufhvial";
        if (s.length%(LABLE_WIDTH/FONT_SIZE)==0) {
            a=s.length/(LABLE_WIDTH/FONT_SIZE);
        }else {
            a=s.length/(LABLE_WIDTH/FONT_SIZE)+1;
        }
        UILabel *lab=[[[UILabel alloc]initWithFrame:CGRectMake(5, b, LABLE_WIDTH, a*FONT_SIZE_HIGHT)]autorelease];
        lab.font=[UIFont systemFontOfSize:FONT_SIZE];
        lab.numberOfLines=a;
        lab.text=s;

这样就可以让标签的行数与高度根据内容来定,然后根据这个标签去确定下一个标签的位置就ok了。

试试:

CGFloat offset = 25.0f;

CGRect frame1 = CGRectMake(10, 100, 30, 50);

UILabel *label = [[UILabel alloc] initWithFrame:frame1];
label.text = @"Varying text length here";
label.numberOfLines = 0;
[label sizeToFit];
[[self view] addSubview:label];

CGRect frame2 = CGRectMake(10,
                           label.frame.origin.y + label.frame.size.height + offset,
                           300,
                           50);

UILabel *label2 = [[UILabel alloc] initWithFrame:frame2];
label2.text = @"Varying text length here";
label2.numberOfLines = 0;
[label2 sizeToFit];
[[self view] addSubview:label2];

这可以实现当前标签框架+25 设置下一个标签的框架