我如何使用boundingRectWithSize:options:attributes:context:
返回与 a完全相同的大小?intrinsicContentSize
UILabel
例如,如果我像下面这样使用它,我会得到最多 1 个像素的差异:
const CGSize maxSize = CGSizeMake(label.frame.size.width, CGFLOAT_MAX);
NSDictionary * attributes = @{NSFontAttributeName:self.font};
CGSize textSize = [label.text boundingRectWithSize:maxSize
options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
attributes:attributes
context:nil].size;
NSLog(@"1: %@", NSStringFromCGSize(label.intrinsicContentSize));
NSLog(@"2: %@", NSStringFromCGSize(textSize));
例如:
1: {53, 17}
2: {52.122002, 18}
的文档boundingRectWithSize
说:
在 iOS 7 及更高版本中,此方法返回小数大小(在返回的 CGRect 的大小组件中);要使用返回的大小来调整视图大小,您必须使用 ceil 函数将其值提高到最接近的更高整数。
53
所以和之间的区别52.122002
是有道理的,可以通过使用来处理ceil
。但是,1像素的高度差不能。
我应该完全使用其他东西吗?