左右并排放置两个UILabel,不知道左侧标签中的文本字符串长度

时间:2011-05-05 00:29:18

标签: iphone objective-c

在iPhone fb应用的照片标签中,对于每个表格视图单元格,他们将相册标题后跟相册中的图片数量。

例如,

第一本专辑(22)

最后和最后的...... (12)

我认为有两个标签,一个用于标题,一个用于数字,因为该数字实际上是不同的UIColor。如何根据标题的大小创建数字浮动到左边的效果?(注意:我不能使用uiwebview,因为这是在uitableview中)

2 个答案:

答案 0 :(得分:4)

sizeWithFont是你的朋友。您可以按如下方式使用它来获得所需的结果:

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectZero]; //for album titles
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectZero]; //for number of pics

/*
 Set other label properties 
 such as background color, 
 font size, font color, etc
*/

NSString *string1 = [NSString stringWithFormat:@"This is a title"];
NSString *string2 = [NSString stringWithFormat:@"22"];

//Let's say both strings have a font size of 12.0f

CGSize string1Size = [string1 sizeWithFont:[UIFont systemFontOfSize:12.0f]];

label1.text = string1;
label2.text = string2;

label1.frame = CGRectMake(0/*or any origin x*/,0/*or any origin y*/,string1Size.width, string1Size.height];

label2.frame = CGRectMake(label1.frame.origin.x + label1.frame.size.width + 5/*or any other padding*/,label1.frame.origin.y, 40.0/*or some other fixed width*/,label1.frame.size.height);

现在只需将它们添加为子视图即可完成!

答案 1 :(得分:1)

您可以使用第一个标签的sizeThatFits:方法检索适合可用空间的标签大小,然后根据第一个标签的最终宽度定位第二个标签。

或者您可以使用各种NSString UIKit additions来测量字符串的长度。

或者您可以自己创建自定义视图并在drawRect:中自行绘制文本,但是当存在其他简单解决方案时不建议这样做(自定义drawRect:使UIKit变慢)。