问题描述
- 添加多个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 设置下一个标签的框架
时间: 2024-10-31 23:47:37