在iPhone fb应用的照片标签中,对于每个表格视图单元格,他们将相册标题后跟相册中的图片数量。
例如,
第一本专辑(22)
最后和最后的...... (12)
我认为有两个标签,一个用于标题,一个用于数字,因为该数字实际上是不同的UIColor。如何根据标题的大小创建数字浮动到左边的效果?(注意:我不能使用uiwebview,因为这是在uitableview中)
答案 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变慢)。