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 に答える