下面是更新的UIlabel使用小技巧:根據字符串的大小來定義label的大小。
通常我們都是先指定label的大小在將字符串寫入label,這樣往往會浪費一些空間,或空間不夠不能將字符串完全顯示,或字符串自適應縮小,或換行。當多個label在一起顯示時就會出現一些想不到的麻煩。
如上圖:label的位置都是預先指定好的,無發根據數據進行自適應位置大小,使得label間存在間隙(客戶不要)。
代碼:
NSString *label7String = [labelDic objectForKey:@"v7"]; //獲取數據
if(label7String){
UILabel *label7 = [[UILabel alloc] initWithFrame:CGRectMake(17, 63, 60, 20)];//指定label位置大小
label7.backgroundColor = [UIColorclearColor];
label7.lineBreakMode = UILineBreakModeWordWrap;
label7.numberOfLines = 1;
label7.font = [UIFont fontWithName:@"Helvetica-Bold" size:12];
label7.text = label7String;
label7.textColor = [UIColor grayColor];
label7.textAlignment = UITextAlignmentLeft;
[button addSubview:label7];
[label7 release];
}
NSString *label8String = [labelDic objectForKey:@"v8"];
if(label8String){
UILabel *label8 = [[UILabel alloc] initWithFrame:CGRectMake(77, 60, 40, 25)];
label8.backgroundColor = [UIColorclearColor];
label8.lineBreakMode = UILineBreakModeWordWrap;
label8.numberOfLines = 1;
label8.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
label8.text = label8String;
label8.textColor = [UIColor blueColor];
label8.textAlignment = UITextAlignmentLeft;
[button addSubview:label8];
[label8 release];
}
下面的一個接口可以返回指定大小的字符串在顯示時的實際大小。
CGSize titleSize = [label8String sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];
如上圖,label間無間隙。
代碼:
CGSize size7 = CGSizeMake(0, 0); //初始化size7
NSString *label7String = [labelDic objectForKey:@"v7"]; //獲取數據
if(label7String){
UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:12]; //指定字符串的大小
CGSize titleSize = [label7String sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; //獲取字符串的實際大小
size7 = titleSize;//保存字符串的大小(也就是label的大小)用來指定相鄰的label8的位置
UILabel *label7 = [[UILabel alloc] init];
label7.frame = CGRectMake(17, 63, titleSize.width, titleSize.height);//初始化label7
label7.backgroundColor = [UIColorclearColor];
label7.lineBreakMode = UILineBreakModeWordWrap;
label7.numberOfLines = 1;
label7.font = [UIFont fontWithName:@"Helvetica-Bold" size:12];
label7.text = label7String;
label7.textColor = [UIColor grayColor];
label7.textAlignment = UITextAlignmentLeft;
[button addSubview:label7];
[label7 release];
}
CGSize size8 = CGSizeMake(0, 0); //初始化size8
NSString *label8String = [labelDic objectForKey:@"v8"];//獲取數據
if(label8String){
UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
CGSize titleSize = [label8String sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; //獲取字符串的實際大小
size8 = titleSize;//保存字符串(label)大小,用來指定相鄰的label位置
UILabel *label8 = [[UILabel alloc] init];
label8.frame = CGRectMake(17 + size7.width, 60, titleSize.width, titleSize.height);//這里根據相鄰label7的位置大小來指定label8的位置,根據字符串的大小來指定label8的大小
label8.backgroundColor = [UIColor clearColor];
label8.lineBreakMode = UILineBreakModeWordWrap;
label8.numberOfLines = 1;
label8.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
label8.text = label8String;
label8.textColor = [UIColor blueColor];
label8.textAlignment = UITextAlignmentLeft;
[button addSubview:label8];
[label8 release];
}