【发布时间】:2013-01-19 00:39:51
【问题描述】:
可能重复:
How to get height for NSAttributedString at a fixed width
现在 NSAttributedString 在 iOS 6 中可用。出于布局目的,我想知道如何计算 NSAttributedString 在固定宽度下所需的高度。我正在寻找与 NSString 的 - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size 等效的东西,但对于 NSAttributedString。
计算 NSAttributedStrings 的绘制大小,有两种方法:
-
- (CGSize)size不能使用,因为它没有考虑任何宽度。 - 我试过
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context,但不知怎的,它并没有给我正确的高度。我认为该方法是错误的。如果我运行以下代码,它会给我bounding size: 572.324951, 19.000000,忽略给定的 200 宽度。它应该给我 100 的高度。
还有其他方法可用于 Mac OS X,但不适用于 iOS。
【问题讨论】:
-
@SimonGoldeen 这不是一个好的复制品。接受的答案实际上并没有给出高度,其他答案也没有显示使用
boundingRectWithSize:options:context:方法的正确方法。 -
在 Swift 中,这可以通过
let desiredWidth: CGFloat = 300; let rect = attrStr.boundingRect(with: CGSize(width: desiredWidth, height: CGFloat.greatestFiniteMagnitude), options: [.usesLineFragmentOrigin, .usesFontLeading], context: nil)完成
标签: ios nsattributedstring bounding-box