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

Iphone 在不知道左标签中文本的字符串长度的情况下,左右并排放置两个UILabel,iphone,objective-c,Iphone,Objective C,在iPhone fb应用程序的“照片”选项卡中,他们为每个表视图单元格添加相册标题,然后是相册中的图片数量 比如说, 第一张专辑(22) 最后一个也是最后一个AL…(12) 我认为有两个标签,一个是标题,一个是数字,因为数字实际上是不同的颜色。如何创建数字根据标题大小向左浮动的效果?(注意:我不能使用uiwebview,因为它位于uitableview中)您可以使用第一个标签的sizeThatFits:方法检索适合可用空间的标签大小,然后根据第一个标签的结果宽度定位第二个标签 或者你也可以做同样

在iPhone fb应用程序的“照片”选项卡中,他们为每个表视图单元格添加相册标题,然后是相册中的图片数量

比如说,

第一张专辑(22)

最后一个也是最后一个AL…(12)


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

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

或者你也可以做同样的事情,用不同的方法来测量字符串的长度

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

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

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

现在只需将它们添加为子视图,就可以了

这里有用的方法是[NSString sizeWithFont:],如图所示。根据可以设置的任何约束,还可以使用其他变体来获取大小。在iOS参考中查找此方法;它非常有用:)