6

我想计算 NSAttributedString Multiline 的高度。它适用于单行(意味着它减去高度的领先)。但如果文本是多行的,它给出的结果与单行相同。

NSMutableParagraphStyle *titleParagraphStyle = [[NSMutableParagraphStyle alloc] init];
titleParagraphStyle.lineHeightMultiple = 0.9f;
titleParagraphStyle.lineBreakMode = NSLineBreakByWordWrapping;

CGSize constrainedSize = CGSizeMake(TOUNameWidth, MAXFLOAT); 

NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                      TOUNameFont, NSFontAttributeName,
                                      titleParagraphStyle, NSParagraphStyleAttributeName,
                                      nil];

NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString: name attributes:attributesDictionary];


CGRect rect = [string boundingRectWithSize:constrainedSize options:NSStringDrawingUsesFontLeading context:nil];

NSLog(@"rect is %f",rect.size.height);
4

1 回答 1

8

根据boundingRectWithSize:options:context:您需要添加的文档NSStringDrawingUsesLineFragmentOrigin

如果没有指定 NSStringDrawingUsesLineFragmentOrigin ,矩形的高度将被忽略,该操作被认为是单线渲染。(由于一个错误,宽度在 iOS 6 上也被忽略了。)

于 2013-07-23T19:30:55.433 回答