2011-05-05 77 views
2

在iPhone fb应用的照片选项卡中,对于每个表格视图单元格,他们放置相册标题,然后放入相册中的图片数量。左侧和右侧并排放置两个UILabels,不知道左侧标签中文本的字符串长度

例如,

第一张专辑(22)

最后也是最终AL ...(12)

我认为有两个标签,一个是标题和一个号码,因为这个号码实际上是一个不同的UIColor。 (注意:我不能使用uiwebview,因为这是在一个可用的视图中)

回答

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); 

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

+0

这里有用的方法是[NSString sizeWithFont:],如图所示。还有其他的变化,可以让你得到的大小取决于你可以设置的任何约束。在iOS参考中查看此方法;这很有用:) – Sid 2011-05-05 00:40:30

1

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

或者你可以使用不同的NSString UIKit additions来测量字符串的长度。

或者您可以自己制作自定义视图并自己在drawRect:中绘制文本,虽然当其他简单解决方案存在时(定制drawRect:使UIKit变慢)不推荐使用。