如何计算iOS 6中给定宽度的NSAttributedString的高度
可能重复:
如何获得固定宽度的NSAttributedString的高度
现在NSAttributedString在iOS 6中可用。出于布局的目的,我想知道如何在固定宽度下计算NSAttributedString所需的高度。 我正在寻找相当于NSString的东西- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
但NSAttributedString。
要计算NSAttributedStrings的graphics大小,有两种方法可用:
-
- (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 *属性= @ {NSFontAttributeName:[UIFont fontWithName:@“HelveticaNeue”大小:15],NSForegroundColorAttributeName:[UIColor blueColor]}; [assignedString appendAttributedString:[[NSAttributedString alloc] initWithString:@“Attributed String \ n”attributes:attributes]]; [assignedString appendAttributedString:[[NSAttributedString alloc] initWithString:@“Attributed String \ n”attributes:attributes]]; [assignedString appendAttributedString:[[NSAttributedString alloc] initWithString:@“Attributed String \ n”attributes:attributes]]; [assignedString appendAttributedString:[[NSAttributedString alloc] initWithString:@“Attributed String \ n”attributes:attributes]]; [assignedString 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。
选项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
包含一个字体属性。 没有字体,没有办法正确计算大小。