【问题标题】:sizeWithFont: constrainedToSize: lineBreakMode: not working right when changing font sizesizeWithFont: constrainedToSize: lineBreakMode: 更改字体大小时无法正常工作
【发布时间】:2013-01-29 09:53:33
【问题描述】:
我遇到了一些 UITextViews 的问题。您可以选择更改我的应用程序中的字体大小,当您更改它时,它会重新加载内容并调整文本视图的大小,因为视图中有多个。我正在使用下面的代码来调整大小,但它有时会返回正确的高度,但是当我在应用程序中更改文本大小时,它似乎会崩溃并返回不正确的高度,并且 textviews 中的文本在底端。有人可以帮我吗?
int height = [tempTextView.text sizeWithFont:
[UIFont fontWithName:fontFamily size:fontSizeF]
constrainedToSize:CGSizeMake(300, 10000) lineBreakMode:
NSLineBreakByWordWrapping].height;
【问题讨论】:
标签:
uiscrollview
uitextview
uifont
sizewithfont
【解决方案1】:
我知道这是一个老问题和迟到的答案,但它仍然非常相关,
此 sizeWithFont 方法现已弃用,此新方法效果最佳
NSString *content = **Whatever your label's content is expected to be**
CGSize maximumLabelSize = CGSizeMake(390, 1000);
NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:13] forKey: NSFontAttributeName];
CGSize newExpectedLabelSize = [content boundingRectWithSize:maximumLabelSize options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin attributes:stringAttributes context:nil].size;
因此您可以将标签(或表格单元格等)调整为
label.frame.size.height = newExpectedLabelSize.height;
我希望这会有所帮助,干杯,吉姆。