2012-07-12 35 views
0

我有一個UILabel,顯示用戶的「生物」。我也讓用戶能夠通過在用戶點擊時彈出uitextview來編輯這些文本,然後一旦用戶完成從這個uitextview添加或刪除文本,我說label.text = textview.text,因此它更新了生物標籤的文字。
但是,我想要一種方法告訴標籤根據添加或刪除多少文本來修復它的高度。有沒有辦法做到這一點?先謝謝你!ios如何autoresize uilabel的高度時添加文本或刪除(和numberOfLines = 0)

NathanF

回答

4
CGRect labelFrame = label.frame; 
labelFrame.size = [textview.text sizeWithFont:label.font 
          constrainedToSize:CGSizeMake(label.frame.size.width, CGFLOAT_MAX) 
           lineBreakMode:label.lineBreakMode]; 
label.frame = labelFrame; 

這將根據新的文本(同時尊重字體和linebreakmode)調整標籤(高度)。

注意:UILineBreakMode從6.0開始已被棄用。改用NSLineBreak。

Source

4

呼叫

[labelName sizeToFit]; 

設置在新文本之後。另外,還要確保你設置自動換行或字符換行,像這樣:

[labelName setLineBreakMode:UILineBreakModeWordWrap]; 

[labelName setLineBreakMode:UILineBreakModeCharacterWrap]; 

讓我知道如果您有任何其他問題!

+0

謝謝。這完全有效,但我的一個標準是保持相同的寬度。 – 2012-07-13 18:49:32

1

這種方法 「sizeWithFont」 在iOS的7棄用這不是你可以使用下面的方法:

CGRect rect = [YourText boundingRectWithSize:CGSizeMake(labelWidth, CGFLOAT_MAX) 
             options:NSStringDrawingUsesLineFragmentOrigin 
             context:nil]; 
NSLog(@"Height: %f",rect.size.height); 

欲瞭解更多信息調查:Apple's Documentation

+0

我得到[__NSCFConstantString pointSize]:在使用上面的代碼後發送給實例的無法識別的選擇器 – 2014-11-03 13:14:38

相關問題