2009-09-10 16 views
5

テーブルセルのラベルに表示する文字列の幅は2つあります。テーブルセルの高さが正しく記録されるように高さを計算する必要があります。しかし、私が拘束サイズのために何をしても、私は同じ高さを得ます。これは、必要な場合には間違っています。私が使用しているコード:なぜsizeWithFont:constrainedToSize:lineBreakMode:不正なサイズを返しますか?

CGFloat width = 300.0f; 
NSString * value = @"LongText LongText LongText LongText LongText LongText"; 
CGSize contentSize = [value sizeWithFont: [UIFont systemFontOfSize: 14.0f] 
         constrainedToSize: CGSizeMake(width, CGFLOAT_MAX) 
          lineBreakMode: UILineBreakModeWordWrap]; 

私がcontentSize変数を調べると、幅は252、高さは36と予想されます。しかし、300.0fiの代わりにwidth変数に222.0fを差し込むと、幅は189ですが、高さはまだ36で、最初の4つのLongText単語だけが2行に表示されます(3行目は何とか計算)。誰がなぜこれが起こっているのか知っていますか?

+0

UITextViewを使用している場合は、ここで私の答えを見てください:http://stackoverflow.com/questions/2330939/sizewithfont-doesnt-give-correct-height-for-uitextview-if-there-is -a-long-strin/15408198#15408198 – domsom

答えて

3

あなたのコードは正しいようです。 herehereを参照して、コードに不具合がないかどうかを確認してください。

+0

ありがとうございます。しかし、実際には、メソッドがより細い幅に対して正しく動作しない理由を実際に説明していません。 – Kevlar

+0

いいえ、コードが機能しているはずです。私はあなたのコードとあなたのコードの違いを見るかもしれないと思った...私はしなかった。 – mahboudz

+2

権利;私はちょうど誰かが実際にサイズを計算するリンゴのコードが正しくない場合、代替があることを知っているかどうか疑問に思っています。 – Kevlar

3

正しいサイズが返されていることがわかります。私が作業していたコードは、このメソッドの幅の代わりに不正な幅を使用していたため、テキストが途切れてしまい、混乱しました。

関連する問題