计算UILabel的intrinsicContentSize,具有精确的精度

时间:2014-01-29 16:21:29

标签: ios iphone ios7 uilabel textkit

如何使用boundingRectWithSize:options:attributes:context:返回与<{1}}的{​​{1}}相同的完全

例如,如果我像下面一样使用它,我会得到最多1个像素的差异:

intrinsicContentSize

E.g:

UILabel

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)); 的文档说:

  

在iOS 7及更高版本中,此方法返回小数(大小)   返回的CGRect的组件);使用返回的大小来确定大小   视图,必须使用将其值提高到最接近的更高整数   使用ceil函数。

因此1: {53, 17} 2: {52.122002, 18} boundingRectWithSize之间的区别是有道理的,可以使用53来处理。但是,1像素的高度差不能。

我应该完全使用其他东西吗?

0 个答案:

没有答案