0

私は非常に長い文字列を持っており、デフォルトのフォントで数千行あります。したがって、1つのテーブルビューセルにすべてを描画するのではなく、同じ文字列を描画するために複数のセルを作成し、それぞれが文字列の次の部分を描画します。

出発点を見つけるのに苦労しています。文字列の高さの最初の500ピクセルを長方形に描画するとします。2番目の長方形のどこから開始するかをどのように知ることができますか?同じ文字列の場合、文字列の一部のみを描画するように指定するにはどうすればよいですか?

各セルはそれ自体の行番号を知っているので、テーブルのどこにいるかを正確に判断できます。文字列がどの部分を描画するのかをどのように知るのかわかりません。

または、別の質問は、特定の行数に基づいて1つの文字列を複数の文字列に分割するにはどうすればよいですか?

編集:これが便利かもしれないと私が見つけたいくつかのNSStringメソッドですが、私の場合、それらをどのように使用するかはまだわかりません:

- (void)getLineStart:(NSUInteger *)startIndex end:(NSUInteger *)lineEndIndex contentsEnd:(NSUInteger *)contentsEndIndex forRange:(NSRange)aRange
- (NSRange)lineRangeForRange:(NSRange)aRange
4

2 に答える 2

1

使用substringWithRange:これにより、文字列の始点と終点を選択できます。私は各セクションをいくつかの文字でつかみます。したがって、セクション1は0〜500になり、セクション2は500〜1000になります。ここでの問題は、文の途中で途切れる可能性があることです。lineRangeForRangeのようなものを使用して、サブストリングの範囲を決定できます。

lineRangeForRange
Returns the range of characters representing the line or lines containing a given range.

- (NSRange)lineRangeForRange:(NSRange)aRange
Parameters
aRange
A range within the receiver.
Return Value
The range of characters representing the line or lines containing aRange, including the line termination characters.

編集

NSString *string = @"tjykluytjghklukytgjhkkghkj sdkjlhfkjsadgfiulgeje fuaeyfkjasdgfueghf aksjgflkj. wyruehskjluishfoeifh uasyeajhkfa uiyelkjahsdf uayekljshdf aehkfjsd. \n I iheio;fajkdsf sdfhlueshkfjskdhf ujhelkjfh. luehljkfhlsdf. leufhlkjdshfa. \n euoiywhfldsjkhf euyhfsdlkj. ewhlkjfsd. euilhfsdkjishdkjf euhjklsfd. \n";
NSLog(@"string length:%i", [string length]);
NSRange range;
range.length = [string length]/2;
range.location = 0;
NSLog(@"LineRangeForRange:%i", [string lineRangeForRange:range].length);
NSLog(@"Substring:%@", [string substringWithRange:[string lineRangeForRange:range]]);

ログ表示:

string length:295
LineRangeForRange:148
Substring:tjykluytjghklukytgjhkkghkj sdkjlhfkjsadgfiulgeje fuaeyfkjasdgfueghf aksjgflkj. wyruehskjluishfoeifh uasyeajhkfa uiyelkjahsdf uayekljshdf aehkfjsd.

つまり、LineRangeForRangeに、文字列の0から半分までの範囲を指定しました。その範囲内の最後の終了行「\n」である可能性があります。それから私はその部分文字列をつかみました

于 2012-05-10T16:04:09.653 に答える
0

アプリでテキストを読みたい方法のようには聞こえません。textViewを使用してみませんか?

編集:私の推奨事項は、textViewをtableViewCellに配置することではなく、テキストの先頭を切り捨てて表示し、クリックすると、textViewを表示するviewControllersをプッシュすることでした。メールのようなものです。

于 2012-05-10T16:04:56.710 に答える