找到UILabel中最宽文本行的宽度

时间:2014-02-13 16:59:28

标签: ios objective-c uilabel

在iOS 6及更低版本中,我可以使用– sizeWithFont:forWidth:lineBreakMode:,但在iOS 7中已弃用。

在Apple文档中,它表示使用– boundingRectWithSize:options:attributes:context:代替。

我如何使用它来获取UILineBreakModeWordWrap的文本宽度?

1 个答案:

答案 0 :(得分:0)

NSString传递给此方法,它将返回它的高度和宽度。您需要在boundingRectWithSize中设置最大高度和宽度以满足您的需求。

- (CGSize)sizeOfText:(NSString*)text{

NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f]}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){yourMaxWidth, CGFLOAT_MAX}
                                           options:NSStringDrawingUsesLineFragmentOrigin
                                           context:nil];

return CGSizeMake(rect.size.width,rect.size.height);
 }