我正在使用NSString的sizeWithAttributes方法来获取NSString的动态高度。
我的字符串是@“这是地址第1行\ n这是地址第2行”
但是方法只返回line1的大小(在\ n字符之前)
有没有办法在字符串大小中包含\ n?
答案 0 :(得分:2)
您无法使用sizeWithAttributes
来计算多行文字的大小。想一想。多行文本的大小取决于必须绘制的宽度。sizeWithAttributes
不允许您指定分配的宽度。
您需要使用boundingRectWithSize:options:attributes:context:
。指定具有所需宽度和非常大的高度的尺寸。返回的值将为您提供所需的大小,以便将文本包装在指定的大小内。
其使用的一个例子是:
NSString *addressString = ... // your string to measure
NSDictionary *attributes = @{ NSFontAttributeName : [UIFont fontWithName:kFontName size:kProductFont] };
CGFloat desiredWidth = 300; // adjust accordingly
CGRect neededRect = [addressString
boundingRectWithSize:CGSizeMake(desiredWidth, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
attributes:attributes context:nil];
CGFloat neededHeight = neededRect.size.height;