0

aとまったく同じサイズboundingRectWithSize:options:attributes:context:を返すにはどうすればよいですか?intrinsicContentSizeUILabel

たとえば、以下のように使用すると、最大 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 ピクセルの高さの違いはできません。

まったく別のものを使用する必要がありますか?

4

0 に答える 0