如何计算NSAttributedString的高度与在IOS 6给定的宽度[重复](How to c

2019-07-18 10:05发布

可能重复:
如何获得高度NSAttributedString在一个固定的宽度

现在NSAttributedString是iOS中6可用布局的目的,我想知道如何计算下固定宽度的NSAttributedString所需的高度。 我在寻找的东西,这相当于的NSString的- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size ,但对于NSAttributedString。

为了计算NSAttributedStrings的图纸尺寸,有两种方法:

  1. - (CGSize)size不能被使用,因为它不带任何宽度考虑在内。
  2. 我想- (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的其他方法。

Answer 1:

选项2并在iOS的工作与适当的参数。

NSAttributedString *attrStr = ... // your attributed string
CGFloat width = 300; // whatever your desired width is
CGRect rect = [attrStr boundingRectWithSize:CGSizeMake(width, 10000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];

如果没有对正确的价值观options参数,你会得到错误的高度。

它也要求attrStr包含字体属性。 如果没有的字体,就没有办法正确计算大小。



文章来源: How to calculate the height of an NSAttributedString with given width in iOS 6 [duplicate]