我们在处理多个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