2013-07-23 2 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.)

Смежные вопросы