Como calcular a altura de um NSAttributedString com largura determinada no iOS 6 [duplicado]
Duplicata Possível:
Como obter altura para NSAttributedString em uma largura fixa
Agora NSAttributedString está disponível no iOS 6. Para fins de layout, quero saber como calcular a altura necessária de um NSAttributedString em largura fixa. Eu estou procurando por algo que é equivalente a NSString- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
mas para NSAttributedString.
Para calcular o tamanho do desenho de NSAttributedStrings, existem dois métodos disponíveis:
- (CGSize)size
não pode ser usado porque não leva em consideração qualquer largura.eu tentei- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context
, mas de alguma forma não me dá a altura correta. Eu acho que o método é buggy. Se eu executar o seguinte código, isso me dábounding size: 572.324951, 19.000000
ignorando a largura dada de 200. Deve dar-me algo como 100 de altura.NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; NSDictionary *attributes = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue" size:15], NSForegroundColorAttributeName : [UIColor blueColor]}; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; CGRect frame = [attributedString boundingRectWithSize:CGSizeMake(200, 1000) options:0 context:nil]; NSLog(@"bounding size: %f, %f", frame.size.width, frame.size.height);
Existem outros métodos disponíveis para o Mac OS X, mas não para o iOS.