如何在iOS 6中计算给定宽度的NSAttributedString的高度

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

现在NSAttributedString在iOS 6中可用。出于布局的目的,我想知道如何在固定宽度下计算NSAttributedString的所需高度。 我正在寻找相当于NSString的东西- (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 Stringn" attributes:attributes]];
        [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed Stringn" attributes:attributes]];
        [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed Stringn" attributes:attributes]];
        [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed Stringn" attributes:attributes]];
        [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed Stringn" 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。


    选项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包含一个字体属性。 没有字体,没有办法正确计算大小。

    链接地址: http://www.djcxy.com/p/74263.html

    上一篇: How to calculate the height of an NSAttributedString with given width in iOS 6

    下一篇: Performance of CAShapeLayer?