2013-07-23 12 views
5

我想計算NSAttributedString Multiline的高度。它對於單線來說工作得很好(意味着它是從高處減去負值)。但是如果文本是多行的,它就像單行一樣。NSAttributedString多行給錯了高度?

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

爲每boundingRectWithSize:options:context:的文檔,你需要添加NSStringDrawingUsesLineFragmentOrigin

如果未指定NSStringDrawingUsesLineFragmentOrigin,則 矩形的高度將被忽略,被認爲是 單行渲染操作。 (由於錯誤,寬度在iOS 上也被忽略6.)