2013-07-23 12 views
5

Chcę obliczyć wysokość NSAttributedString Multiline. Działa to dobrze dla pojedynczej linii (oznacza to, że jest to minus początek z wysokości). ale jeśli tekst jest wielowierszowy, daje to samo, co pojedyncza linia.NSAttributedString multiline podając niewłaściwą wysokość?

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); 

Odpowiedz

4

Zgodnie z dokumentacją boundingRectWithSize:options:context: trzeba dodać NSStringDrawingUsesLineFragmentOrigin

Jeśli NSStringDrawingUsesLineFragmentOrigin nie jest określony, height prostokąta będą ignorowane i działania uważane za pojedynczej linii renderowania. (Z powodu błędu szerokość jest również ignorowana na iOS 6.)