我有一個UILabel,顯示用戶的「生物」。我也讓用戶能夠通過在用戶點擊時彈出uitextview來編輯這些文本,然後一旦用戶完成從這個uitextview添加或刪除文本,我說label.text = textview.text,因此它更新了生物標籤的文字。
但是,我想要一種方法告訴標籤根據添加或刪除多少文本來修復它的高度。有沒有辦法做到這一點?先謝謝你!ios如何autoresize uilabel的高度時添加文本或刪除(和numberOfLines = 0)
NathanF
我有一個UILabel,顯示用戶的「生物」。我也讓用戶能夠通過在用戶點擊時彈出uitextview來編輯這些文本,然後一旦用戶完成從這個uitextview添加或刪除文本,我說label.text = textview.text,因此它更新了生物標籤的文字。
但是,我想要一種方法告訴標籤根據添加或刪除多少文本來修復它的高度。有沒有辦法做到這一點?先謝謝你!ios如何autoresize uilabel的高度時添加文本或刪除(和numberOfLines = 0)
NathanF
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。
您可以使用[NSString的sizeWithFont:...],以衡量在標籤中使用文本。
呼叫
[labelName sizeToFit];
設置在新文本之後。另外,還要確保你設置自動換行或字符換行,像這樣:
[labelName setLineBreakMode:UILineBreakModeWordWrap];
或
[labelName setLineBreakMode:UILineBreakModeCharacterWrap];
讓我知道如果您有任何其他問題!
這種方法 「sizeWithFont」 在iOS的7棄用這不是你可以使用下面的方法:
CGRect rect = [YourText boundingRectWithSize:CGSizeMake(labelWidth, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
NSLog(@"Height: %f",rect.size.height);
欲瞭解更多信息調查:Apple's Documentation
我得到[__NSCFConstantString pointSize]:在使用上面的代碼後發送給實例的無法識別的選擇器 – 2014-11-03 13:14:38
謝謝。這完全有效,但我的一個標準是保持相同的寬度。 – 2012-07-13 18:49:32