2 bluetooth99 bluetooth99 于 2013.01.14 11:16 提问

添加多个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。不知道怎么实现?

2个回答

lwq421336220
lwq421336220   2013.01.14 12:36
已采纳

这里只说对于一个标签的高度的判断,你可以根据第一个标签的高度去设置第二个标签的位置,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了。

suannai0314
suannai0314 编辑了一下~
大约 5 年之前 回复
prettYYoyic
prettYYoyic   2013.01.14 11:44

试试:

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 设置下一个标签的框架

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!