2

テキストを表示するために使用している UITextView があります。横に、行番号を表示するために使用している UITableView があります。この問題は、行番号をテキストの行に揃えようとしたときに発生します。問題のスクリーンショットは次のとおりです: https://www.dropbox.com/s/7sjqm4nrsqm6srh/Screen%20Shot%202012-10-11%20at%209.16.58%20PM.png たとえば、7 行目を下に移動する必要があります。新しい行の先頭ではないためです。問題は、テキストの行が折り返されるときの間隔に対処する必要があると思いますが、よくわかりません。

したがって、UITableView では、テキスト行と同じ量のセルを作成しています。次に、次のメソッドを使用してセルの高さがテキストの各行と同じになるようにセルを引き伸ばします。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
int i = indexPath.row;
if (i == 0) {
    return 10;
}

UIFont *font = _codeView.font;

NSArray *strings = [_codeView.text componentsSeparatedByString:@"\n"];
NSString *tempString = [strings objectAtIndex:i-1];

if (([strings objectAtIndex:i-1] == @"\n") | ([[strings objectAtIndex:i-1] length] == 0) ) {
    tempString = @"hi";
}

CGSize stringSize = [tempString sizeWithFont:font constrainedToSize:CGSizeMake(_codeView.bounds.size.width, 9999) lineBreakMode:NSLineBreakByWordWrapping];
CGFloat height = stringSize.height;

return height;
}

_codeView は、コードを表示するために使用している UITextView です。行番号を表示する UITableView の上部にも 1 つの空白セルがあるため、最初のセルと行番号をテキストの最初の行に揃えることができます。

間隔を調整する方法を複数試しましたが、どれも問題を解決していないようです。どんな助けでも大歓迎です。

4

2 に答える 2

1

sizeWithFont に渡すサイズに問題があると思います。幅を textView の幅に設定しています。これは実際には少し広すぎます。テキスト ビューには、実際には少し余白があります。幅から数ポイント引いてみてください。また、プレーンな文字列ではなく、属性付きのテキストを扱っています。NSAttributedString の高さを計算する方法を確認する必要があります。

あなたが投稿したコードの最後のこと。heightForRowAtIndexPath: を呼び出すたびに _codeView.text を分割しています。良くないね。これを一度行って、文字列を保存する必要があります。このメソッドはよく呼び出されます。これは、多くの冗長な文字列分割です。

于 2012-10-12T02:51:58.037 に答える
0

私はあなたが何を求めているのか少し混乱しています。

テキストがあり、その横にテーブルビューがあり、2つを並べようとしていると言っていますか?

于 2012-10-12T02:45:22.953 に答える