0

長方形内のフォントに設定したときに文字列が何行になるかを知りたいです。これを行う方法はありますか?

私はこのコードを持っていますが、スクロールビューで頻繁に使用されているため、処理を少し速くしようとしています。

CGSize maximumSize = CGSizeMake(MESSAGE_FRAME.size.width - 16, 1000000);

    CGSize expectedSize = [message sizeWithFont:[UIFont fontWithName:@"Crimson" size:15]
                              constrainedToSize:maximumSize
                                  lineBreakMode:UILineBreakModeWordWrap];

return expectedSize.height;

私はこれが行の高さを返すことを知っています:

NSLog(@"%f", [[UIFont fontWithName:@"Crimson" size:15] lineHeight]);

したがって、これに別の値を掛けることができれば、より高速になる可能性があります。

4

3 に答える 3

3

私は別の方法を思いつきませんし、もっと効率的な方法があるとは思えません (結局のところ、行数を増やしてワード ラップの計算を回避できる魔法はありますか?)。

とにかく、計算のサイクルを削って脳を傷つけるのではなく、ビューがスクロールしている間に何度も計算を行う必要があるかどうかを検討してください。私の推測ではノーです。

これを高速化する方法は、従来のサイズ計算を行い、結果をキャッシュすることだと思います。

于 2012-05-17T15:16:32.893 に答える
2

別の方法はわかりませんが、テーブルビューで同様のケースで行った小さな提案があります。データがどこかに保存されている場合 (私の場合、ネットワークからテキストを受信して​​データベースに保存します)、テキストを最初に受信したときにのみこの方法を使用してサイズを計算し、この回答を保存します。データをロードするとき、サイズを配列に入れて、値をすばやく取得できるようにします。

単なる提案ですが、お役に立てば幸いです。

于 2012-05-17T15:17:31.017 に答える