我想显示3行NSAttributedString。有没有一种方法可以根据宽度和行数来确定所需的高度?
而且我不想创建UILabel来进行大小计算,因为我希望计算在后台线程中完成。
最佳答案
我不知道为什么仍然没有答案。无论如何,这是最适合我的最快方法。
制作一个名为“Height”的NSAttributedString类别。这将生成两个名为“NSAttributedString + Height。{h,m}”的文件。
在.h文件中:
@interface NSAttributedString (Height)
-(CGFloat)heightForWidth:(CGFloat)width;
@end
在.m文件中:
-(CGFloat)heightForWidth:(CGFloat)width
{
return ceilf(CGRectGetHeight([self boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading
context:nil])) + 1;
}
这是正在发生的事情:
这是使用方法
NSAttributedString *string = ...
CGFloat height = [string heightForWidth:320.0f];
您可以使用该高度进行布局计算。
关于nsattributedstring - 给定宽度和行数,如何计算NSAttributedString的高度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18888013/