Как вычислить высоту NSAttributedString с заданной шириной в iOS 6 [дубликат]
Возможный дубликат:
Как получить высоту для NSAttributedString при фиксированной ширине
Теперь NSAttributedString доступна в iOS 6. В целях компоновки я хочу знать, как рассчитать требуемую высоту NSAttributedString при фиксированной ширине. Я'ищу что-то, чтоS эквивалентно NSString's- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
но для NSAttributedString.
Для расчета размера рисунка NSAttributedStrings доступны два метода:
- (CGSize)size
Можно'не должен использоваться, потому что он не принимает во внимание ширину.Я старался- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context
, но почему-то это не такдайте мне правильную высоту. Я думаю, что метод глючит. Если я запускаю следующий код, он дает мнеbounding size: 572.324951, 19.000000
игнорируя заданную ширину 200. Это должно дать мне что-то вроде 100 высоты.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);
Есть другие методы, доступные для Mac OS X, но не для iOS.