gpt4 book ai didi

nsattributedstring - 给定宽度和行数,如何计算 NSAttributedString 的高度?

转载 作者:行者123 更新时间:2023-12-04 02:15:16 56 4
gpt4 key购买 nike

我想显示 3 行 NSAttributedString。有没有办法根据宽度和行数确定所需的高度?

而且我不想创建 UILabel 来进行大小计算,因为我希望计算在后台线程中完成。

最佳答案

我想知道为什么这仍然没有答案。无论如何,这是对我有用的最快方法。

创建一个名为“高度”的 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;
}

这是发生了什么:
  • boundRectWithSize:options:context 得到一个矩形,它被限制为你传递给方法的宽度。 NSStringDrawingUsesLineFragmentOrigin 选项告诉它期望多行字符串。
  • 然后我们从该矩形中获取高度参数。
  • 在 iOS 7 中,此方法返回小数。我们需要一个圆形的数字。 ceilf 对此有所帮助。
  • 我们为返回值添加了一个额外的单位。

  • 这是如何使用它
    NSAttributedString *string = ...
    CGFloat height = [string heightForWidth:320.0f];

    您可以使用该高度进行布局计算。

    关于nsattributedstring - 给定宽度和行数,如何计算 NSAttributedString 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18888013/

    56 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com