我得到了一些應用程序的一些文本數據。創建靈活的UILabel
從TableView用戶選擇一個單元格,然後使用相關文本數據查看UIViewController。但是信息文本可能從1行到N.如何創建這樣的UILabel,它將根據文本的大小改變大小?
我得到了一些應用程序的一些文本數據。創建靈活的UILabel
從TableView用戶選擇一個單元格,然後使用相關文本數據查看UIViewController。但是信息文本可能從1行到N.如何創建這樣的UILabel,它將根據文本的大小改變大小?
另一種解決方案是使用sizeWithFont方法在代碼中執行此操作。 你可以在這裏找到更多的信息:iOS: UILabel dynamic height using sizeWithFont:constrainedToSize:lineBreakMode: not working
如果它是變化的高度,你可以設置最大標籤大小,用你的標準標籤寬度和9999的高度,然後檢查建議的大小會是怎樣爲您的文字,使用標籤
您可以設置標籤的numberOfLines
屬性以指定它可以換行的行數。如果將其設置爲零,則可以換行至任意數量的行。你可以在你的筆尖中設置這個屬性。
但是,您還需要設置足夠大的幀以顯示所有行。最簡單的方法是在設置其文本後發送sizeToFit
消息。它會保持其寬度(我認爲),但將其高度改爲足夠高以便在包裝後顯示其所有線條。
如果您的文字太多而不適合放在屏幕上(或不適合您的標籤可用空間),則應該使用UITextView
。 A UITextView
允許自動滾動。
在的NSString UIKit的添置的字體,你可以找到下面的方法:
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode
這一個,你可以定義標籤的最佳高度或寬度。例如,爲了獲得一個UILabel的最佳高度,您可以創建的UILabel類別下面的方法:
- (float)optimalHeight
{
return [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(self.frame.size.width, UINTMAX_MAX) lineBreakMode:self.lineBreakMode].height;
}
後
,你可以簡單地改變你的UILabel的框架。不要忘記將標籤的行數設置爲0.
我可以爲該標籤設置固定寬度嗎?然後採取高度? – 2012-02-29 07:30:36
檢查出[這個問題和答案](http://stackoverflow.com/questions/406212/sizing-a-uilabel-to-fit) – ayoy 2012-02-29 07:44:39