私は表示している文字列の長さに基づいて高さを調整するUITableViewCellを作成しようとしていますが、このメソッドではハングアップしています。なぜ私のsizeWithFont:constrainedToSize:lineBreakMode:常にゼロを返しますか?
は、ここで私が持っているものです:
どんなにNSString *text = @"A really long string in here";
CGSize theSize = [text sizeWithFont:[UIFont boldSystemFontOfSize:18.0f] constrainedToSize:CGSizeMake(265.0f, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
NSString *stringHeight = [NSString stringWithFormat:@"%d", theSize.height];
何、0
としてstringHeight
表示されます。私は何が欠けていますか?
ありがとうございます!
を使用することができます。私は '%d'も'浮動小数点数 'のために働いた印象を受けましたが、明らかにそうではありません。 'MAXFLOAT'はうまく動作しているようですが、適切な数だけうまく動作します。早速のご返事ありがとうございます! – Triz
また、 '%d' = signed intで、doubleではありません('%i'と同じです)。 '%f'(または'%lf')は浮動小数点と倍精度の両方で動作します。 (64ビット環境下では、CGFloatはdoubleですが、ここでは当然当てはまりません) – Wevah
ここでは、CGFLOAT_MAXの方が優れていますが、MAXFLOATを使用する危険性はありません。いずれかが、後で読者が意図的な限界として解釈するかもしれない、ランダムな大きな数字を選ぶよりもはっきりしています。 –