5

次のコードを使用して、の境界を計算しますUILabel

CGRect bound = [lblName.text boundingRectWithSize:(CGSize){206, 99999}
                                    options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                 attributes:stringAttributes
                                          context:nil];

はのサブビューである にUILabel埋め込まれています。UIScrollViewUITableViewCell

ここで私が得たもの

ここに画像の説明を入力

UILabel表のセルで a と aUILabelUIScrollView別々に使用するテストを行いましたが、結果は期待どおりです

ここに画像の説明を入力

のすべての設定 (フォント、改行モードなど) はUILabel、これらすべての場合で同じであることに注意してください。これらboundingRectWithSizeすべてのケースで同じ結果を返しますが、違いはUILabelテキストをレンダリングする方法だけです。

ここで何が問題なのですか?私は何かを逃しましたか?

更新: これは、ペン先から UILabel をロードした場合にのみ発生します。プログラムで作成された場合、問題はありません。(私のプロジェクトは xcode 4 から xcode 5 に移行されています)

4

2 に答える 2

16

これを試して:

bound.size.height += 1;

アップデート:

Appleのドキュメントによると

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context

このメソッドは、(返された CGRect のサイズ コンポーネントで) 分数のサイズを返します。返されたサイズをビューのサイズに使用するには、ceil 関数を使用してその値を最も近い整数に上げる必要があります。

したがって、次のアプローチを使用することをお勧めします。

bound.size.height = ceil(bound.size.height);
于 2013-09-25T18:08:19.317 に答える