2013-07-23 11 views
5

Voglio calcolare l'altezza di NSAttributoString Multiline. Funziona bene per linea singola (significa che è meno il leader dall'altezza). ma se il testo è multilinea sta dando lo stesso di una singola riga.NSAribributoStringa multilinea che fornisce un'altezza errata?

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

risposta

4

Come per la documentazione di boundingRectWithSize:options:context: è necessario aggiungere NSStringDrawingUsesLineFragmentOrigin

Se NSStringDrawingUsesLineFragmentOrigin non è specificato, l'altezza del rettangolo verrà ignorato e l'operazione considerata rendering single-line. (A causa di un bug, la larghezza viene ignorata anche su iOS 6.)