2011-05-05 76 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變慢)不推薦使用。