aとまったく同じサイズboundingRectWithSize:options:attributes:context:
を返すにはどうすればよいですか?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 ピクセルの高さの違いはできません。
まったく別のものを使用する必要がありますか?