2

こんにちは、特定の行で UITableView の文字列を分割して、独自のセルに「残り」(データの 2 番目の部分) を配置する方法があります。

NSString *data;    
CGsize *size = [data sizeOfStringWithFont:[UIFont systemFontOfSize:14] constrainToWidth:280.0];

たとえば size.height が 1500 より大きい場合、この行の位置で文字列を分割したい!

ありがとうございました

4

2 に答える 2

1

「constrainedToSize」を (幅だけではなく) 使用して、できる限りレンダリングします。

収まらないテキストを正確に取得したい場合は、基本的に検索を実行し、一度に単語を追加してからサイズチェックを実行して、どれだけ高くなったかを確認する必要があります. 文字列全体を 1 行だけの高さに制限し、無限の幅 (999999 など) にすることで大まかな見積もりから始めて、幅をいくつの行に分割して、追加の大まかな開始点を取得できるようにすることができます。 / 文字列から単語を削除します (単語の折り返しのため、正確ではありません)。

基本的に、残りのテキストを取得して別のセルに入れるのは奇妙に思えますが。セル全体に収まるようにテキストでセルの高さを変更したくないだけですか?

于 2009-06-29T20:57:03.700 に答える
1

Kendall の考えは正しいと思いますが、ワード ラッピングに基づいて正確な高さを取得するには、制約されたサイズを逆にする必要があります。セルと同じ幅であるが、高さが予想される最大高さよりも大きいサンプル CGSize を取得します。以下のサンプル コードでは、textSizeには、無制限の高さでセルに表示される文字列の高さが含まれます。

CGSize sz = CGSizeMake (
   yourCellWidth,
   999999.0f );

CGSize textSize = [yourString sizeWithFont:yourCellfont 
                  constrainedToSize:sz
                  lineBreakMode:UILineBreakModeWordWrap];

高さが 1500 より大きい場合は、末尾から部分文字列 (substringWithRange) を選択し、上記のように、textSize によって返された 1500 を超える残りの部分が得られるまで測定を開始できます。

于 2009-07-19T03:12:30.187 に答える