在大多屬性情況下,給UILabel進行動態數據綁定的時候,往往需要根據字符串的多少,動態調整UILabel的寬度或高度。
下面分兩種情況考慮:
1、UILabel寬度不變,根據字體多少,自動調整UILabel的高度,并折行顯示。
代碼如下:
[cpp] view plaincopy
1 UILabel?*label?=?[[UILabel?alloc]?initWithFrame:CGRectMake(0,?10,?200,?20)];
2 label.font?=?[UIFont?boldSystemFontOfSize:20.0f];??//UILabel的字體大小
3 label.numberOfLines?=?0;??//必須定義這個屬性,否則UILabel不會換行
4 label.textColor?=?[UIColor?whiteColor];
5 label.textAlignment?=?NSTextAlignmentLeft;??//文本對齊方式
6 [label?setBackgroundColor:[UIColor?redColor]];
7
8 //寬度不變,根據字的多少計算label的高度
9 NSString?*str?=?@"可以更改此內容進行測試,寬度不變,高度根據內容自動調節";
10 CGSize?size?=?[str?sizeWithFont:label.font?constrainedToSize:CGSizeMake(label.frame.size.width,?MAXFLOAT)?lineBreakMode:NSLineBreakByWordWrapping];
11 //根據計算結果重新設置UILabel的尺寸
12 [label?setFrame:CGRectMake(0,?10,?200,?size.height)];
13 label.text?=?str;
14
15 [self.view?addSubview:label];
16 [label?release];
2、UILabel高度不變,根據字體多少,自動調整UILabel的寬度,并折行顯示
代碼如下:
[cpp] view plaincopy
1 UILabel?*label?=?[[UILabel?alloc]?initWithFrame:CGRectMake(0,?10,?20,?20)];
2 label.font?=?[UIFont?boldSystemFontOfSize:20.0f];??//UILabel的字體大小
3 label.numberOfLines?=?0;??//必須定義這個屬性,否則UILabel不會換行
4 label.textColor?=?[UIColor?whiteColor];
5 label.textAlignment?=?NSTextAlignmentLeft;??//文本對齊方式
6 [label?setBackgroundColor:[UIColor?redColor]];
7
8 //高度固定不折行,根據字的多少計算label的寬度
9 NSString?*str?=?@"高度不變獲取寬度,獲取字符串不折行單行顯示時所需要的長度";
10 CGSize?size?=?[str?sizeWithFont:label.font?constrainedToSize:CGSizeMake(MAXFLOAT,?label.frame.size.height)];
11 NSLog(@"size.width=%f,?size.height=%f",?size.width,?size.height);
12 //根據計算結果重新設置UILabel的尺寸
13 [label?setFrame:CGRectMake(0,?10,?size.width,?20)];
14 label.text?=?str;
15
16 [self.view?addSubview:label];
17 [label?relea