2013-07-23 18 views
5

NSAttributedString Çok Satırının yüksekliğini hesaplamak istiyorum. Tek satır için iyi çalışıyor (eksi, yükseklikten önde olduğu anlamına geliyor). ancak metin çok satırlıysa, tek satırda aynıdır.NSAttributedString çok satırlı yanlış yükseklik veriyor?

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

cevap

4

boundingRectWithSize:options:context: belgelenmesi olarak başına NSStringDrawingUsesLineFragmentOrigin

NSStringDrawingUsesLineFragmentOrigin belirtilmemişse, dikdörtgenin yüksekliği göz ardı edilecek ve tek hat render olarak kabul operasyonu eklemeniz gerekir. (Bir hata nedeniyle, genişlik de iOS 6'da yok sayılır. 6.)