2011-05-24 47 views
0

我在爲兩個不同字符串獲取正確幀時遇到了一個問題。我通過下面的代碼運行兩個字符串:設置後標籤大小發生變化,具體取決於字符串

UILabel *myLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; 
myLabel.lineBreakMode = UILineBreakModeWordWrap; 
myLabel.numberOfLines = 2; 
myLabel.textAlignment = UITextAlignmentCenter; 
myLabel.font = [UIFont boldSystemFontOfSize:11]; 
myLabel.text = @"About Stores" 
myLabel.text = @"About Rivers" 

CGSize myLabelSize = CGSizeMake(70,28); 
[myLabel sizeWithFont:myString.font  // <-- One of two strings 
    constrainedToSize:aLabelSize 
     lineBreakMode:UILineBreakModeWordWrap]; 

結果爲myString1 =>寬度:70,高度:28
結果爲myString2 =>寬度:70,高度:14

爲什麼有這裏有什麼不同?

+1

什麼是myString.font?什麼是標籤大小?你在第二行缺少一個分號。 – titaniumdecoy 2011-05-24 16:54:15

+0

@Jason:更新了我的問題。它是一個UILabel。 – Abhinav 2011-05-24 17:27:17

回答

0

問題我看到:

的NSString沒有字體屬性。您可能想用UILabel.font替換「myString.font」,其中UILabel將被計劃用於顯示字符串的UILabel實例替換。

sizeWithFont應該返回您在CGSize實例存儲CGSize。

似乎你不是很清楚使用它。我已經發布了關於如何正確使用sizeWithFont的答案。你應該看看這裏:Place two UILabels side by side left and right without knowing string length of text in left label

順便說一下,這就是爲什麼你看到高度上的差異...我認爲垃圾值是作爲字體大小參數傳入。如果您對字體大小參數進行硬編碼,您會看到一致的結果。

+0

@Siddharth:我更新了我的問題。它不是一個NSString,而是一個UILabel。 – Abhinav 2011-05-24 17:26:50

+0

@Abhinav:你看過鏈接了嗎?這個答案有幫助嗎?你是否還將myLabel.font作爲「sizeWithFont」方法中的字體參數傳遞? – Sid 2011-05-24 17:32:29

+0

@Siddharth:是的,我將正確的值傳遞給sizeWithFont,並用斷點檢查它。對於我的兩個文本字體和約束大小是相同的,但它返回不同的結果。對於一個文本,它將其包裝爲兩行,而其他文本則保存在一行中。 – Abhinav 2011-05-24 17:41:55

0

只需更換上述碼N試用一下.....我硝酸鉀穿上它是否工作強制檢查:)

[myLabel sizeWithFont:[UIFont fontWithName:@"Helvetica-Bold" size:11]  
constrainedToSize:myLabelSize lineBreakMode:UILineBreakModeWordWrap]; 

也「;」在標籤中缺失

myLabel.text = @「關於商店」; myLabel.text = @「關於河流」;`

問候..

0

有一個區別,因爲系統字體爲黑體,這是一個可變大小的字體。 myString1中的文本比myString2中的文本更寬,所以字符串需要換行以適合第二行。由於您指定了最多2行和UILineBreakModeWordWrap,這就是您所得到的。如果您希望它適合一行,請使myLabelSize稍寬或使用較小的字體大小。

相關問題