在我的項目中,有一個文字爲UILabel
。字體大小是16pt。文本內容根據不同情況而改變。我希望它可以自動調整寬度UILabel
以適應文本的總寬度而不會拉伸。如何調整和使UILabel的寬度適合文本大小?
可能嗎?
在我的項目中,有一個文字爲UILabel
。字體大小是16pt。文本內容根據不同情況而改變。我希望它可以自動調整寬度UILabel
以適應文本的總寬度而不會拉伸。如何調整和使UILabel的寬度適合文本大小?
可能嗎?
這裏假設你已經設置字體:
label.text = @"some text";
[label sizeToFit];
您還需要定義一個最大寬度,並告訴你的程序如果sizeToFit給你的寬度大於最大值,該怎麼做。
我在這裏看到三個選項。
首先,讓標籤的尺寸足夠大以容納任何文字。這很簡單,但並不總是很好 - 取決於其周圍的景觀。
二,標籤可以調整較長文本的字體大小(adjustsFontSizeToFitWidth
屬性)。這通常是不可取的,元素中的不同字體可能看起來很醜。
最後一個選項是根據當前保存的文本以編程方式調整標籤的大小。爲了計算與當前字體使用像這樣保存文本所需的大小:
CGSize textSize = [[someLabel text] sizeWithFont:[someLabel font] forWidth:someLabel.bounds.size.width lineBreakMode:UILineBreakModeWordWrap];
如果我們使用UILineBreakModeWordWrap我們可以進入上的UILabel多行,我怎麼可以設置兩條線之間的空行。 – 2012-07-04 09:40:58
下面是如何做到這一點,假設以下messageLabel
是您想要達到預期效果的標籤。現在,嘗試代碼的這些簡單的行:
// Set width constraint for label; it's actually the width of your UILabel
CGFloat constrainedWidth = 240.0f;
// Calculate space for the specified string
CGSize sizeOfText = [yourText sizeWithFont:yourFont constrainedToSize:CGSizeMake(constrainedWidth, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(20,20,constrainedWidth,sizeOfText.height)];
messageLabel.text = yourText;
messageLabel.numberOfLines = 0;// This will make the label multiline
這實際上是一個很好的答案......只是不是針對這個特定的問題!如果您想在維持固定寬度的同時自動調整「UILabel」的*高度*,此答案將很有效。事實上,當我看到這個頁面時,我正在尋找這個東西。我很樂意爲您的答案投票...但它不回答問題。不過,好的解決方案,可能會幫助其他人絆倒這個頁面。 – 2012-04-23 15:23:52
謝謝jon!其實我也在尋找這個解決方案,順便說一句,我設法做到了,然後認爲我應該在這裏分享它。 :)順便說一句,那個時候發生的事情是,我沒有很好地注意到這個問題,所以犯了錯誤,我想。對不起,很高興它幫助你:D – 2012-04-23 16:53:47
嗯,它幫助我投票。 – 2012-10-25 11:26:26
NSString *[email protected]"I am here.";
CGSize stringsize1 = [txt1 sizeWithFont:[UIFont systemFontOfSize:14]];
[label setFrame:CGRectMake(x,y,stringsize1.width,hieght)];
[label setText:txt1];
關注這個。
CGSize stringsize = [yourString sizeWithFont:[UIFont systemFontOfSize:fontSize]];
[label setFrame:CGRectMake(x,y,stringsize.width,height)];
[label setText: yourString];
此方法已棄用 – 2016-05-19 14:54:08
如果設置的字體和大小已經,如果你有你的框架定義,請嘗試使用這兩種常見情況如下:
if (label.text.length > maxCharPerLine) [label setNumberOfLines:0]; // infinite lines
else [label setNumberOfLines:1]; // one line only
// Adjust your font size to fit your desired width.
[label setAdjustsFontSizeToFitWidth:YES];
假設您嘗試多行標籤,那麼是的這是正確的方法。用於將課程設置的行數單行標記爲1。 – 2017-03-07 18:19:37
由於sizeWithFont在IOS 7.0,那麼你是貶值下面的代碼
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
// code here for iOS 5.0,6.0 and so on
CGSize fontSize = [itemCat_text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:12]];
} else {
// code here for iOS 7.0
fontSize = [itemCat_text sizeWithAttributes:
@{NSFontAttributeName:
[UIFont fontWithName:@"Helvetica" size:12]}];
}
sizeToFit方法是UIView的一種方法。 – TopChul 2011-08-16 04:03:44
如何定義最大寬度? – 2012-08-07 13:44:42
+1這個答案幫了我最大的忙。 – 2012-10-23 06:17:38